AngryWatterson
XLDnaute Nouveau
Bonjour,
J'utilise un tableau recensant des évènements datés, et quand plusieurs évènements similaires ont eu lieu, une macro aligne les dates de tous ces évènements sur la ligne du premier évènement.
Voici cette macro:
Merci encore à Dranreb, qui l'a développée et m'a ainsi ôté une grosse épine du pied.
Malheureusement, ledit pied a évolué, et j'ai atteint une limite de la macro.
Quand un trop grand nombre d'évènements similaires se suit, la macro plante.
La ligne où se produit l'erreur est celle-ci:
If Not IsEmpty(Te(Le, Ce)) Then Cs = Cs + 1: Ts(Ls, Cs) = Te(Le, Ce)
La partie soulignée est en jaune dans VBA.
Je souhaite poser une limite à l'incrémentation, pour que s'il y a plus de 10 évènements similaires consécutifs, tout ce groupe d'évènements soit ignoré.
Je suppose qu'il faut placer une condition de type "If Cs > 5 Then Exit For", mais je n'ai pas trouvé où, Pourriez-vous m'aider ?
Egalement, pourrait-on m'expliquer la syntaxe de cette ligne, spécialement le ":" ?
If X then Y je comprends, mais If X then Y:Z je suis perdu.
Merci à vous.
J'utilise un tableau recensant des évènements datés, et quand plusieurs évènements similaires ont eu lieu, une macro aligne les dates de tous ces évènements sur la ligne du premier évènement.
Voici cette macro:
Code:
Sub AlignementDates()
Dim Plage As Range, Te(), Le&, Ce&, Ts(), Ls&, Cs&
Te = Feuil1.Range(Feuil1.[A50000].End(xlUp), Feuil1.[AK4]).Value
ReDim Ts(1 To UBound(Te, 1), 1 To 20)
Ls = 1
For Le = 1 To UBound(Te) ' Pour chaque ligne d'entrée
For Ce = 9 To 12 ' De H à K: si l'un change cette ligne devient la nouvelle ligne de sortie et on repart à 0 pour la colonne de sortie (à W en fait)
If Te(Le, Ce) <> Te(Ls, Ce) Then Ls = Le: Cs = 0: Exit For
Next Ce
For Ce = 28 To UBound(Te, 2) ' Pour chaque X à AA: s'il n'est pas vide on l'empile à la colonne suivante de la ligne de sortie
If Not IsEmpty(Te(Le, Ce)) Then Cs = Cs + 1: Ts(Ls, Cs) = Te(Le, Ce)
If Cs > 5 Then Exit For
Next Ce
Next Le
Feuil1.[AB4].Resize(UBound(Ts, 1), 11).Value = Ts
End Sub
Merci encore à Dranreb, qui l'a développée et m'a ainsi ôté une grosse épine du pied.
Malheureusement, ledit pied a évolué, et j'ai atteint une limite de la macro.
Quand un trop grand nombre d'évènements similaires se suit, la macro plante.
La ligne où se produit l'erreur est celle-ci:
If Not IsEmpty(Te(Le, Ce)) Then Cs = Cs + 1: Ts(Ls, Cs) = Te(Le, Ce)
La partie soulignée est en jaune dans VBA.
Je souhaite poser une limite à l'incrémentation, pour que s'il y a plus de 10 évènements similaires consécutifs, tout ce groupe d'évènements soit ignoré.
Je suppose qu'il faut placer une condition de type "If Cs > 5 Then Exit For", mais je n'ai pas trouvé où, Pourriez-vous m'aider ?
Egalement, pourrait-on m'expliquer la syntaxe de cette ligne, spécialement le ":" ?
If X then Y je comprends, mais If X then Y:Z je suis perdu.
Merci à vous.