Situation de départ: Un classeur contient une feuille synthèse et 200 onglets que l'utilisateur remplit les uns à la suite des autres.
La macro suivante va chercher le contenu d'une centaine de cellules dans les 200 onglets du classeur pour les reporter dans la feuille synthèse, une ligne par onglet. Si un onglet n'a pas encore été utilisé, elle affiche le signe "-" dans chaque colonne de la colonne D à la colonne DV mais continue jusqu'à épuisement de la liste d'onglets.
Peut-on faire en sorte que si un nombre arbitraire des dernières lignes générées (par exemple 20) ne contient que le signe "-" de la colonne D à la colonne DV (soit de Iw, 4 à Iw, 126) lors de l'alimentation, la macro se termine car cela signifie que le reste des onglets n'est pas encore utilisé et que leur traitement est inutile?
La macro suivante va chercher le contenu d'une centaine de cellules dans les 200 onglets du classeur pour les reporter dans la feuille synthèse, une ligne par onglet. Si un onglet n'a pas encore été utilisé, elle affiche le signe "-" dans chaque colonne de la colonne D à la colonne DV mais continue jusqu'à épuisement de la liste d'onglets.
Peut-on faire en sorte que si un nombre arbitraire des dernières lignes générées (par exemple 20) ne contient que le signe "-" de la colonne D à la colonne DV (soit de Iw, 4 à Iw, 126) lors de l'alimentation, la macro se termine car cela signifie que le reste des onglets n'est pas encore utilisé et que leur traitement est inutile?
Code:
Sub Synthèse()
Dim Sh As Worksheet
Range("B2:L1000").ClearContents
Iw = 2 ' Index écriture
For Each Sh In ActiveWorkbook.Sheets
If Sh.Name = "Synthèse" Then GoTo EndConsolidation
Cells(Iw, 1).Select
With Selection
.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & Sh.Name & "'" & "!" & "A1", TextToDisplay:="Aller vers"
End With
Cells(Iw, 2) = Sh.Name
If Sh.Range("D8") = "" Then
Cells(Iw, 3) = "-"
Else
Cells(Iw, 3) = Sh.Range("D8")
End If
'Ici le reste du traitement du tableau (Iw, 4 jusqu'à Iw, 125)
If Sh.Range("C134") = "" Then
Cells(Iw, 126) = "-"
Else
Cells(Iw, 126) = Sh.Range("C134")
End If
Iw = Iw + 1
EndConsolidation:
Next Sh
End Sub
Dernière édition: