Bonsoir le forum,
Dans un post du 12/11/2019 de job75 que j'ai trouvé en cherchant une solution à mon problème (copier une colonne de données dans tous les fichiers d'un répertoire et les coller les unes à la suite des autres dans une feuille excell), la macro suivante était suggérée:
sub MAJ()
Dim chemin$, fichier$, feuille$, ncol%, lig&, f$, derlig As Variant, ad$
chemin = ThisWorkbook.Path & "\" 'à adapter événtuellement
fichier = Dir(chemin & "*.xlsx") '1er fichier du dossier
feuille = "Feuil1" 'nom de la feuille à copier dans les fichiers
Application.ScreenUpdating = False
With Feuil1 'CodeName de la feuille des résultats, à adapter
.Rows("2:" & Rows.Count).Delete xlUp 'RAZ
ncol = .[A1].CurrentRegion.Columns.Count
lig = 2
While fichier <> ""
f = "'" & chemin & "[" & fichier & "]" & feuille & "'!"
derlig = ExecuteExcel4Macro("MATCH(9^99," & f & "R1C1:R1048576C1)")
If IsNumeric(derlig) Then
If derlig > 1 Then
ad = .Cells(2, 1).Resize(derlig - 1, ncol).Address
With .Cells(lig, 1).Resize(derlig - 1, ncol)
.FormulaArray = "=" & f & ad 'formule de liaison matricielle
.Value = .Value 'supprime la formule
End With
lig = lig + derlig - 1
End If
End If
fichier = Dir 'fichier suivant
Wend
.UsedRange.Replace 0, "", xlWhole 'supprime les zéros
End With
End Sub
J'ai construit ma propre macro en m'en inspirant et je bute sur un problème qui est que la macro ne trouve pas mes fichiers. Le message d'erreur est "le fichier *.xlsx n'existe pas,..."
Je pensais que la commande:
fichier = Dir(chemin & "*.xlsx") permettait de désigner le 1er fichier du répertoire, comme c'est indiqué dans le commentaire, mais visiblement ce n'est pas le cas…
Auriez-vous une idée de ce qui peut poser problème dans mon cas?
Autre question, comment se fait-il que la commande:
fichier = Dir
suffise à passer au fichier suivant?
Merci pour vos réponses
Dans un post du 12/11/2019 de job75 que j'ai trouvé en cherchant une solution à mon problème (copier une colonne de données dans tous les fichiers d'un répertoire et les coller les unes à la suite des autres dans une feuille excell), la macro suivante était suggérée:
sub MAJ()
Dim chemin$, fichier$, feuille$, ncol%, lig&, f$, derlig As Variant, ad$
chemin = ThisWorkbook.Path & "\" 'à adapter événtuellement
fichier = Dir(chemin & "*.xlsx") '1er fichier du dossier
feuille = "Feuil1" 'nom de la feuille à copier dans les fichiers
Application.ScreenUpdating = False
With Feuil1 'CodeName de la feuille des résultats, à adapter
.Rows("2:" & Rows.Count).Delete xlUp 'RAZ
ncol = .[A1].CurrentRegion.Columns.Count
lig = 2
While fichier <> ""
f = "'" & chemin & "[" & fichier & "]" & feuille & "'!"
derlig = ExecuteExcel4Macro("MATCH(9^99," & f & "R1C1:R1048576C1)")
If IsNumeric(derlig) Then
If derlig > 1 Then
ad = .Cells(2, 1).Resize(derlig - 1, ncol).Address
With .Cells(lig, 1).Resize(derlig - 1, ncol)
.FormulaArray = "=" & f & ad 'formule de liaison matricielle
.Value = .Value 'supprime la formule
End With
lig = lig + derlig - 1
End If
End If
fichier = Dir 'fichier suivant
Wend
.UsedRange.Replace 0, "", xlWhole 'supprime les zéros
End With
End Sub
J'ai construit ma propre macro en m'en inspirant et je bute sur un problème qui est que la macro ne trouve pas mes fichiers. Le message d'erreur est "le fichier *.xlsx n'existe pas,..."
Je pensais que la commande:
fichier = Dir(chemin & "*.xlsx") permettait de désigner le 1er fichier du répertoire, comme c'est indiqué dans le commentaire, mais visiblement ce n'est pas le cas…
Auriez-vous une idée de ce qui peut poser problème dans mon cas?
Autre question, comment se fait-il que la commande:
fichier = Dir
suffise à passer au fichier suivant?
Merci pour vos réponses