Problème de boucle pour macro excel
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai une macro de créer pour un classeur Excel. Cette macro sauvegarde des fichier Excel selon des noms qui se trouvent dans les rangées d'une liste.
Mon problème est que cette macro dois ce faire pour une soixantaine de lignes et que je ne veux pas tout faire à la main.
J'ai donc essayé avec une boucle "for", mais je n'arrive à rien. La macro en tant que telle fonctionne très bien, par contre la boucle n'avance pas. x devrait prendre la valeur 2 dans Dx, Ex et Fx, mais rien ne se passe.
Voici ma macro actuelle:
Sub Sauvegarde_Fichiers()
Dim x As Integer
For x = 2 To 61
Range("A1").Select
ActiveCell.Formula = "=Liste!Dx"
'Sauvegarder le fichier dans le répertoire sous le nom contenu en A1
Chemin = ActiveWorkbook.Path
Fichier = Cells(1, 1).Value
ActiveWorkbook.SaveAs Filename:=Chemin & "\" & Fichier & ".xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
Next x
End Sub
Merci beaucoup.
J'ai une macro de créer pour un classeur Excel. Cette macro sauvegarde des fichier Excel selon des noms qui se trouvent dans les rangées d'une liste.
Mon problème est que cette macro dois ce faire pour une soixantaine de lignes et que je ne veux pas tout faire à la main.
J'ai donc essayé avec une boucle "for", mais je n'arrive à rien. La macro en tant que telle fonctionne très bien, par contre la boucle n'avance pas. x devrait prendre la valeur 2 dans Dx, Ex et Fx, mais rien ne se passe.
Voici ma macro actuelle:
Sub Sauvegarde_Fichiers()
Dim x As Integer
For x = 2 To 61
Range("A1").Select
ActiveCell.Formula = "=Liste!Dx"
'Sauvegarder le fichier dans le répertoire sous le nom contenu en A1
Chemin = ActiveWorkbook.Path
Fichier = Cells(1, 1).Value
ActiveWorkbook.SaveAs Filename:=Chemin & "\" & Fichier & ".xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
Next x
End Sub
Merci beaucoup.
A voir également:
- Problème de boucle pour macro excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
2 réponses
Bonjour
J'essaye de résumer:
Les noms de fichiers se trouvent entre A1 et A62 ?
tu veux simplement enregistrer des fichiers (vides!) dont le nom provient des cellules A1 à A62?
Apportes quelques éclaircissements et la solution n'est pas loin!
A+
J'essaye de résumer:
Les noms de fichiers se trouvent entre A1 et A62 ?
x devrait prendre la valeur 2 dans Dx, Ex et Fx, mais rien ne se passe: rien n'est exprimé en fonction de x (je ne vois pas de Ex ou Fx), sauf dans
ActiveCell.Formula = "=Liste!Dx"mal écrit et qui sert à quoi ?
tu veux simplement enregistrer des fichiers (vides!) dont le nom provient des cellules A1 à A62?
Apportes quelques éclaircissements et la solution n'est pas loin!
A+
Je comprend mieux.
Voila qui doit répondre à ta question:
Sub Sauvegarde_Fichiers()
Dim i As Integer '(dans les indices de boucle on met de préférence les lettres i,j,k...)
For i = 2 To 61
' on copie dans les cellules A1 à A60 de la feuille "bareme" les valeurs r des cellules D2 à D61 de la feuille "liste"
Worksheets("BAREME").Cells(i - 1, 1).Value = Worksheets("Liste").Cells(i, 1).Value
'Sauvegarder le fichier dans le répertoire sous le nom contenu en A1
Chemin = ActiveWorkbook.Path
Fichier = Worksheets("BAREME").Cells(i - 1, 1).Value
ActiveWorkbook.SaveAs Filename:=Chemin & "\" & Fichier & ".xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
Next i
End Sub
les lignes en italiques sont des explications(?) ou plutot commentaires.
Je ne suis pas sur que la plage D2 à D61 de la feuille liste doit être copiée intégralement dans bareme .
Si ce n'est pas le cas, ou si tu ne comprend pas tout , fais signe .
A+
Voila qui doit répondre à ta question:
Sub Sauvegarde_Fichiers()
Dim i As Integer '(dans les indices de boucle on met de préférence les lettres i,j,k...)
For i = 2 To 61
' on copie dans les cellules A1 à A60 de la feuille "bareme" les valeurs r des cellules D2 à D61 de la feuille "liste"
Worksheets("BAREME").Cells(i - 1, 1).Value = Worksheets("Liste").Cells(i, 1).Value
'Sauvegarder le fichier dans le répertoire sous le nom contenu en A1
Chemin = ActiveWorkbook.Path
Fichier = Worksheets("BAREME").Cells(i - 1, 1).Value
ActiveWorkbook.SaveAs Filename:=Chemin & "\" & Fichier & ".xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
Next i
End Sub
les lignes en italiques sont des explications(?) ou plutot commentaires.
Je ne suis pas sur que la plage D2 à D61 de la feuille liste doit être copiée intégralement dans bareme .
Si ce n'est pas le cas, ou si tu ne comprend pas tout , fais signe .
A+
Alors voici.
Mon classeur Excel a deux feuille, une nommée "BAREME" et une autre nommé "Liste"
Ce que j'essais de faire, c'est de prendre le premier nom qui se trouve dans la plage D2:D61 de la feuille "Liste", de le copier dans la cellule A1 de la feuille "BAREME" puis d'enregistrer le fichier sous le nom qui ce trouve dans la cellule A1 de la feuille "BAREME".
Maintenant, je dois faire ces étapes pour chacun des noms contenus dans la plage D2:D61 de la feuille "Liste"
Merci beaucoup,
RR