Loop+condition
Bonjour à tous
J'ai une macro qui crée depuis un tableau un fichier pour chaque "sport". Dans le tableau il existe 15 sports, donc la boucle crée 15 fichiers.
Je souhaite lui ajouter une condition pour qu'elle crée le fichier uniquement lorsque le "sport" est "OUI" (colonne A).
J’ai essayé à plusieurs reprises des exemples de VBA mais sans succès.
Si vous me permettez, je vous transmets le fichier Excel.
En vous souhaitant une bonne réception.
Cher internaute, je vous serai reconnaissant pour le temps que vous allez ’m'accorder, je vous remercie à l'avance pour votre aide.
'Macro "SPORTS()" se réfère à tous les sports saisie de la colonne B de la feuille "PARAMETRES".
'Ensuite, elle créée et enregistre un fichier par sport dans "J9"
Sub SPORTS()
Dim no_sport As Integer
no_sport = 1 '"no_sport" var du numéro du sport, ici on l'initialise le compteur à 1.
strCheminSource = ActiveWorkbook.FullName 'nom complet du fichier modèle.
lder = ThisWorkbook.Worksheets("PARAMETRES").Range("A" & Application.Rows.Count).End(xlUp).Row '"lder" var compte le nombre de la dernière LIGNE ECRITE (ex ici lder = 24).
dersport = lder - 9 '24 - 9 = 15 fichiers à créér.
Do While no_sport < dersport + 1 'boucle : la condition de cette boucle est "tant que le n° sport (donc 1) est inférieur à 24+1
Range("B1").Value = Range("B" & no_sport + 9).Value 'La cellule B1 prend la valeur de la cellule B10 au 1er passage
Range("C1").Value = Range("C" & no_sport + 9).Value '...
Range("D1").Value = Range("D" & no_sport + 9).Value
Range("E1").Value = Range("E" & no_sport + 9).Value
Sheets(2).Name = Worksheets("PARAMETRES").Range("B1").Value 'chaque fichier crée, la 2è feuille prend le nom "B1".
Application.DisplayAlerts = False 'Désactiver l'affichage des messages d'alerte
chemin = Range("J9").Value & "\" '"J9": Dossier d'enregistrement.
strfichier = chemin & "Fiche de sport - " & Range("B1").Value & ".xls" 'nomination du fichier
ActiveWorkbook.SaveAs Filename:=strfichier, FileFormat:=xlExcel8
no_sport = no_sport + 1 'sport est incrémenté de 1
Loop 'fin de la 1ère boucleEnd Sub
Bonjour,
à tester,
no_sport = 1 '"no_sport" var du numéro du sport, ici on l'initialise le compteur à 1.
strCheminSource = ActiveWorkbook.FullName 'nom complet du fichier modèle.
lder = ThisWorkbook.Worksheets("PARAMETRES").Range("A" & Application.Rows.Count).End(xlUp).Row '"lder" var compte le nombre de la dernière LIGNE ECRITE (ex ici lder = 24).
dersport = lder - 9 '24 - 9 = 15 fichiers à créér.
Do While no_sport < dersport + 1 'boucle : la condition de cette boucle est "tant que le n° sport (donc 1) est inférieur à 24+1
If Range("A" & no_sport + 9).Value = "OUI" Then
Range("B1").Value = Range("B" & no_sport + 9).Value 'La cellule B1 prend la valeur de la cellule B10 au 1er passage
Range("C1").Value = Range("C" & no_sport + 9).Value '...
Range("D1").Value = Range("D" & no_sport + 9).Value
Range("E1").Value = Range("E" & no_sport + 9).Value
Sheets(2).Name = Worksheets("PARAMETRES").Range("B1").Value 'chaque fichier crée, la 2è feuille prend le nom "B1".
Application.DisplayAlerts = False 'Désactiver l'affichage des messages d'alerte
chemin = Range("J9").Value & "\" '"J9": Dossier d'enregistrement.
strfichier = chemin & "Fiche de sport - " & Range("B1").Value & ".xls" 'nomination du fichier
ActiveWorkbook.SaveAs Filename:=strfichier, FileFormat:=xlExcel8
no_sport = no_sport + 1 'sport est incrémenté de 1
End If
Loop 'fin de la 1ère boucle
End SubBonjour sabV,
J'ai ajouté les deux lignes de VBA (dans le bon ordre), mais ça n'a pas marché :
If Range("A" & no_sport + 9).Value = "OUI" Then
End If
Bonjour,
il faut mettre
End If
juste avant
no_sport = no_sport + 1
Bravo monsieur sabV, c'est magique et ça marche cette fois-ci !
Un gros merci à toi et à ta générosité
j 'suis bien contente que tout fonctionne,
merci pour ce retour et bonne continuation, @+ isabelle