Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Maddad

XLDnaute Nouveau
Bonjour,

Voila j'ai un fichier source que je dois modifier en insérant et rajoutant des colonnes avec des données en fonction des intitulés d'un tableau, le problème c'est que ça bugue en boucle au niveau de la 10ème ou 11èeme ligne, alors que le reste fonctionne bien si je supprime ces dernières.

Voici la macro et le fichier, merci pour votre aide

Code:
Sub automatisation_GROCR_bis()


Dim C As Range

Application.ScreenUpdating = False

Worksheets("GROCR Pertes incluses").Activate


For Each C In Worksheets("GROCR Pertes incluses").Range("A1:BO1")

Select Case C


Case Is = "Montant de la perte imputée"

C.Select
Selection.EntireColumn.Insert


C.Offset(0, -1).Value = "Montant de la perte saisie_T"
C.Offset(1, -1).FormulaLocal = "=SIERREUR(RECHERCHEV(A2;'E:\120_Contrôles de conformité\16.Divulgation trimestrielle_ctl 16\Calcul des pertes opérationnelles\2012-T2\[Pertes opérationnelles T2 2012.xlsx]GROCR Pertes incluses T2-2012'!$A:$T;20;FAUX);0)"
C.Offset(1, -1).AutoFill Destination:=Range(C.Offset(1, -1), C.Offset(Range("A65536").End(xlUp).Row, -1)), Type:=xlFillDefault


Case Is = "Inclusion/Exclusion"

C.Offset(0, 1).Value = "PVPHRC"

C.Offset(0, 2).Value = "Mois"
C.Offset(1, 2).FormulaLocal = "=MOIS(I2)"
C.Offset(1, 2).AutoFill Destination:=Range(C.Offset(1, 2), C.Offset(Range("A65536").End(xlUp).Row, 2)), Type:=xlFillDefault


C.Offset(0, 3).Value = "Trimestre"
C.Offset(1, 3).FormulaLocal = "=SI(AU2<4;1;SI(AU2<7;2;SI(AU2<10;3;4)))"
C.Offset(1, 3).AutoFill Destination:=Range(C.Offset(1, 3), C.Offset(Range("A65536").End(xlUp).Row, 3)), Type:=xlFillDefault

C.Offset(0, 4).Value = "Année"
C.Offset(1, 4).FormulaLocal = "=ANNEE(I2)"
C.Offset(1, 4).AutoFill Destination:=Range(C.Offset(1, 4), C.Offset(Range("A65536").End(xlUp).Row, 4)), Type:=xlFillDefault

end select

next C

end sub
 

Pièces jointes

Re : Bug en boucle

Maddad,

J'ai continué ma recherche sur un fichier dans la formule est simplifiée.

Voici donc , en fait comme tu inserts une colonne et que le pointeur de zone n'évolue pas , lors de l'itération de boucle suivante , ben tu retombes sur la même colonne, donc tu réinséres une colonne , et ainsi de suite jusqu'a débordement ou fin du monde (lol).

La parade que j'ai trouvé ici pour ne pas trop modifier la structure de base de ta boucle, j'ai utilisé des drapeaux afin de ne réaliser qu'une fois l'opération . voici donc le code :

Code:
Sub automatisation_GROCR_bis()
Dim C As Range
Dim Temoin As Boolean
Dim TemoinBis As Boolean

Application.ScreenUpdating = False
Temoin = False
TemoinBis = False
Worksheets("GROCR Pertes incluses").Activate

For Each C In Worksheets("GROCR Pertes incluses").Range("A1:BO1")

  Select Case C

   Case Is = "Montant de la perte imputée"
    If Not Temoin Then
      Temoin = True
      C.EntireColumn.Insert
      C.Offset(0, -1).Value = "Montant de la perte saisie_T"
      C.Offset(1, -1).FormulaLocal = "+1" '"=SIERREUR(RECHERCHEV(A2;'E:\120_Contrôles de conformité\16.Divulgation trimestrielle_ctl 16\Calcul des pertes opérationnelles\2012-T2\[Pertes opérationnelles T2 2012.xlsx]GROCR Pertes incluses T2-2012'!$A:$T;20;FAUX);0)"
      C.Offset(1, -1).AutoFill Destination:=Range(C.Offset(1, -1), C.Offset(Range("A65536").End(xlUp).Row, -1)), Type:=xlFillDefault
    End If

   Case Is = "Inclusion/Exclusion"
    If Not TemoinBis Then
      C.Offset(0, 1).Value = "PVPHRC"

      C.Offset(0, 2).Value = "Mois"
      C.Offset(1, 2).FormulaLocal = "=MOIS(I2)"
      C.Offset(1, 2).AutoFill Destination:=Range(C.Offset(1, 2), C.Offset(Range("A65536").End(xlUp).Row, 2)), Type:=xlFillDefault

      C.Offset(0, 3).Value = "Trimestre"
      C.Offset(1, 3).FormulaLocal = "=SI(AU2<4;1;SI(AU2<7;2;SI(AU2<10;3;4)))"
      C.Offset(1, 3).AutoFill Destination:=Range(C.Offset(1, 3), C.Offset(Range("A65536").End(xlUp).Row, 3)), Type:=xlFillDefault

      C.Offset(0, 4).Value = "Année"
      C.Offset(1, 4).FormulaLocal = "=ANNEE(I2)"
      C.Offset(1, 4).AutoFill Destination:=Range(C.Offset(1, 4), C.Offset(Range("A65536").End(xlUp).Row, 4)), Type:=xlFillDefault

      C.Offset(0, 5).Value = "Trimistre+Année"
      C.Offset(1, 5).FormulaLocal = "=""T""&AV2&""-""&AW2"
      C.Offset(1, 5).AutoFill Destination:=Range(C.Offset(1, 5), C.Offset(Range("A65536").End(xlUp).Row, 5)), Type:=xlFillDefault

      C.Offset(0, 6).Value = "Entité légale / Regroupement+Trimestre+Année"
      C.Offset(1, 6).FormulaLocal = "=SI(ABS(T2)>=5000;AG2&AX2;"""")"
      C.Offset(1, 6).AutoFill Destination:=Range(C.Offset(1, 6), C.Offset(Range("A65536").End(xlUp).Row, 6)), Type:=xlFillDefault

      C.Offset(0, 7).Value = "Unité approbatrice+Trimestre+Année"
      C.Offset(1, 7).FormulaLocal = "=SI(ABS(T3)>=5000;E3&AX3;"""")"
      C.Offset(1, 7).AutoFill Destination:=Range(C.Offset(1, 7), C.Offset(Range("A65536").End(xlUp).Row, 7)), Type:=xlFillDefault

      C.Offset(0, 8).Value = "PVP (HRC)+Trimestre+Année"
      C.Offset(1, 8).FormulaLocal = "=SI(ABS(T3)>=5000;AT3&AX3;"""")"
      C.Offset(1, 8).AutoFill Destination:=Range(C.Offset(1, 8), C.Offset(Range("A65536").End(xlUp).Row, 8)), Type:=xlFillDefault

      C.Offset(0, 9).Value = "Changement"
      C.Offset(1, 9).FormulaLocal = "=SI(MAX(ABS(T2);ABS(U2))>=5000;SI(T2=U2;""Non"";""Oui"");""Non"")"
      C.Offset(1, 9).AutoFill Destination:=Range(C.Offset(1, 9), C.Offset(Range("A65536").End(xlUp).Row, 9)), Type:=xlFillDefault

      C.Offset(0, 10).Value = "Variation"
      C.Offset(1, 10).FormulaLocal = "=SI(BB2=""Oui"";SI(ABS(T2)<5000;0;T2)-SI(ABS(U2)<5000;0;U2);"""")"
      C.Offset(1, 10).AutoFill Destination:=Range(C.Offset(1, 10), C.Offset(Range("A65536").End(xlUp).Row, 10)), Type:=xlFillDefault

      C.Offset(0, 11).Value = "MPAR 5000 +"
      C.Offset(1, 11).FormulaLocal = "=CONCATENER(R2;SI(ABS(T2)>=5000;AX2;""""))"
      C.Offset(1, 11).AutoFill Destination:=Range(C.Offset(1, 11), C.Offset(Range("A65536").End(xlUp).Row, 11)), Type:=xlFillDefault

      C.Offset(0, 12).Value = "MPAR 10000 +"
      C.Offset(1, 12).FormulaLocal = "=CONCATENER(R2;SI(ABS(T2)>=10000;AX2;""""))"
      C.Offset(1, 12).AutoFill Destination:=Range(C.Offset(1, 12), C.Offset(Range("A65536").End(xlUp).Row, 12)), Type:=xlFillDefault

      C.Offset(0, 13).Value = "Follow-up avec Claire"
    End If

  End Select

 Next C

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
236
Réponses
10
Affichages
443
Réponses
4
Affichages
177
Réponses
10
Affichages
281
Réponses
5
Affichages
232
Retour