Re: Import multiple csv | ||
---|---|---|
Inscription: 25/10/2011
Messages:
12
Système d'exploitation: PC Version Excel utilisée: 2003, 2007, 2010 |
Posté le : 22-02-2016 09h25
Bonjour Didier, le forum,
Ta solution fonctionne très très bien.
Si j'ai bien compris, car je ne suis pas un familier de leur utilisation. Tu gères un tableau de dimensions variables dans VBA dans lequel tu listes les fichiers dans l'ordre croissant et ensuite tu forces l'import des fichiers selon ce tableau.
En tout cas merci bcp. Fabrice |
|
|
Re: Import multiple csv | ||
---|---|---|
Inscription: 25/10/2011
Messages:
12
Système d'exploitation: PC Version Excel utilisée: 2003, 2007, 2010 |
Posté le : 21-02-2016 09h17
Bonjour myDearFriend,
Merci pour la réponse.
Et pourtant si, les noms de csv ne sont que des numéros croissant, incrémenté en 1. Ce qui nous donne pour les 12 premiers: 1, 2, 3, 4, 5, 6, 7, 8, 8, 10, 11, 12
Et ainsi de suite.
Pour ce qui concerne le csv en exemple, je vais en altérer un manuellement et je le posterai plus tard dans la journée.
Cordialement, |
|
|
Import multiple csv | ||
---|---|---|
Inscription: 25/10/2011
Messages:
12
Système d'exploitation: PC Version Excel utilisée: 2003, 2007, 2010 |
Posté le : 20-02-2016 11h23
Bonjour à tous,
Je bloque sur une macro dont le but est l'import de multiple csv dans l'onglet d'un classeur.
Principe: J’ai plusieurs fichiers csv dans un répertoire, ils sont nommés en nombres d'ordre croissant (à partir de 1). Je souhaite que les fichiers soit tous importes dans un onglet de mon classeur les uns à la suite des autres
Ma Macro: Private Sub Import_Data_Click() Dim wbCSV As Workbook Dim wsMstr As Worksheet: Set wsMstr = ThisWorkbook.Sheets("Data") Dim fPath As String: fPath = Worksheets("Menu").Cells(4, 1) 'path to CSV files Dim fCSV As String Dim NextCol As Long Dim FilesInPath As String 'Add a slash at the end if the user forget it If Right(fPath, 1) <> "" Then fPath = fPath & "" End If 'If there are no Excel files in the folder exit the sub FilesInPath = Dir(fPath & "*.csv") If FilesInPath = "" Then MsgBox "No files found" Exit Sub End If If MsgBox("Clear the existing Data sheet before importing?", _ vbYesNo, "Clear Database?") = vbYes Then wsMstr.UsedRange.ClearContents NextCol = 1 Else NextCol = wsMstr.Cells(6, Columns.Count).End(xlToLeft).Column + 2 End If Application.ScreenUpdating = False 'speed up macro fCSV = Dir(fPath & "*.csv") 'start the CSV file listing Do While Len(fCSV) > 0 'open a CSV file Set wbCSV = Workbooks.Open(fPath & fCSV) 'copy data into master sheet and close source file ActiveSheet.UsedRange.Copy wsMstr.Cells(3, NextCol) wbCSV.Close False 'read next CSV fCSV = Dir NextCol = wsMstr.Cells(6, Columns.Count).End(xlToLeft).Column + 1 Loop Sheets("Menu").Select Application.ScreenUpdating = True MsgBox "Data Import completed" End Sub Mon Problème: La macro fonctionne parfaitement et fait le travail demandé. Par contre l'ordre d'import des fichiers me pause problème. En effet au-delà de 10 fichiers importés, Excel les traitent dans l'ordre suivant: 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21 ... alors qu'évidement je cherche à avoir 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...
Voilà si jamais un des talentueux membres du forum a une piste, je suis preneur ;).
Merci d'avance, Fabrice |
|
|
Re: Variables | ||
---|---|---|
Inscription: 25/10/2011
Messages:
12
Système d'exploitation: PC Version Excel utilisée: 2003, 2007, 2010 |
Posté le : 07-12-2014 07h09
Bonjour Guy,
Merci pour ton aide.
Au final j'ai trouvé le problème par moi même en voulant créer le fichier d'exemple!
Pour aller chercher la valeur de la variable dans ma feuille, j'utiliser la ligne de code suivante:
Variable1 = Val(Worksheets("Feuil1").cells(1,2))
Dans ce cas, ma variable était prise par VBA à la valeur de l'entier inférieur.
Il suffisait de coder comme ceci pour ne plus avoir de problème:
Encore merci pour avoir pris le temps d'essayer de comprendre mon problème.
Cordialement, Fabrice |
|
|
Variables | ||
---|---|---|
Inscription: 25/10/2011
Messages:
12
Système d'exploitation: PC Version Excel utilisée: 2003, 2007, 2010 |
Posté le : 05-12-2014 15h28
Bonjour à tous,
Je me permets de soumettre mon problème aux experts de ce forum.
J'ai un module VBA qui traite une grande quantité de calcul. Pour effectuer ces calculs j'utilise énormément de variables qui sont liées à une feuille de calcul.
Par fainéantise et au vue de leur très grands nombres, je ne les ai pas déclaré et me suis évidement affranchi de la commande Option Explicit en tête de module. De ce fait l'ensemble de mes variables sont par défaut de type Variant.
Il est évident qu'on est bien loin de ce qu'il faudrait faire pour optimiser le code et notamment le temps de calcul et l'utilisation de la mémoire.
Mon problème est que plusieurs de ces variables contiennent des valeurs décimales mais que VBA les traitent comme des entiers. Il en résulte de très grosses approximations dans le résultat de mes calculs.
J'ai alors essayé de déclarer uniquement les variables à valeurs décimale, en utilisant le type Simple, Long ou Decimal mais sans plus de succès Excel et VBA les traitent toujours comme des entiers.
Avez vous des suggestions pour contourner ce problème?
Merci d'avance pour votre aide.
Cordialement, Fabrice |
|
|
Re: Enregistrer plusieurs onglets sous un seul fichier pdf | ||
---|---|---|
Inscription: 25/10/2011
Messages:
12
Système d'exploitation: PC Version Excel utilisée: 2003, 2007, 2010 |
Posté le : 29-11-2013 13h38
Salut Myta, le Forum,
Effectivement le code fonctionne à merveille et réponds en tout point à mon problème.
Merci beaucoup Myta pour ta contribution Fabrice |
|
|
Enregistrer plusieurs onglets sous un seul fichier pdf | ||
---|---|---|
Inscription: 25/10/2011
Messages:
12
Système d'exploitation: PC Version Excel utilisée: 2003, 2007, 2010 |
Posté le : 28-11-2013 16h53
Bonjour à tous,
J'ai un fichier contenant plusieurs onglets. A l'aide d'un bouton j'aimerai enregistrer 3 de ses onglets sous le même fichier pdf.
J'ai écrit le petit bout de code suivant: Private Sub Generate_Report_Click() Dim EventsName As String Dim Rep As String Application.ScreenUpdating = False 'On Error Resume Next EventsName = Sheets("Events Settings").Cells(4, 4) Rep = ThisWorkbook.Path & "\Engineering Report" Sheets(Array("Report Cover", "Performance Report", "Reliability Report")).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ Rep & EventsName & ".pdf", Quality:= _ xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ From:=1, To:=1, OpenAfterPublish:=False Sheets("Menu").Activate Application.ScreenUpdating = True End Sub Mon problème est qu'un seul des onglets (le premier nommée dans la procédure) est enregistré en pdf.
J'ai essayé plusieurs expressions différentes pour remplacer l'ActiveSheet: ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Mais en fonction de l'expression choisie, j'ai des erreurs type 1004, 424 ou 438. Seule l'expression ActiveSheet ne plante pas la procédure.
Une idée? Merci d'avance pour vos remarques.
Cdlt, Fabrice
|
|
|
Re: Double chrono dans un usf | ||
---|---|---|
Inscription: 25/10/2011
Messages:
12
Système d'exploitation: PC Version Excel utilisée: 2003, 2007, 2010 |
Posté le : 10-11-2012 10h50
Bonjour Jean-Marie, Didier, Le Forum,
Merci pour ta contribution Jean-Marie, pour quelqu'un qui ne maitrise pas trop le VBA tu t'en es plutôt bien sortie. Je me rends compte en lisant tes explications et la logique de ta programmation quand voulant me simplifier la vie, avec notamment la gestion de 2 modules totalement indépendant l'un de l'autre, que je me suis finalement tiré une balle dans le pied tout seul. Pareil pour la gestion des boutons, à la base je voulais limiter le nombre de bouton pour l'interface utilisateur, mais au final j'avais des conditions dans tout les sens en fonction de l'étape. Alors que ta solution de gérer plusieurs boutons superposés et de simplement les rendre visible ou non est tellement plus simple. Pour preuve il suffit de comparer le nombre de ligne de code entre ta version et la mienne! Le fichier corrigé par tes soins répond parfaitement à mes attentes, le sujet est donc pour moi résolu je ferme le topic. Merci encore. A+ Fabrice |
|
|
Double chrono dans un usf | ||
---|---|---|
Inscription: 25/10/2011
Messages:
12
Système d'exploitation: PC Version Excel utilisée: 2003, 2007, 2010 |
Posté le : 09-11-2012 12h04
Bonjour le Forum, |
|
|
Re: Créer un compte à rebours via des formules | ||
---|---|---|
Inscription: 25/10/2011
Messages:
12
Système d'exploitation: PC Version Excel utilisée: 2003, 2007, 2010 |
Posté le : 13-08-2012 15h06
Bonjour Jean-Marie, Didier, Le Forum,
En PJ un permier brouillon que je viens de "bricoler". Alors évidemment le calcul est beaucoup trop rapide mais je n'ai pas encore trouver de solution pour le synchroniser toute les secondes mais le résultat approche ce que j'aimerai. Par contre je confirme qu'il est impossible d'intéragir avec la feuille quand le calcul se déroule ce qui est problématique pour l'utilisation que je veux en faire. Je pense que je vais renoncer mais merci à Jean-Marie pour m'avoir guider vers le calcul itératif. Fabrice |
|
|