Bug en boucle

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

  • Test1.xlsm
    58.7 KB · Affichages: 37
  • Test1.xlsm
    58.7 KB · Affichages: 44
  • Test1.xlsm
    58.7 KB · Affichages: 45

Maddad

XLDnaute Nouveau
Re : Bug en boucle

Resalut,

Voila j'ai remis le même fichier en changeant la formule de la ligne 11 (Formule qui ne fait plus référence à un autre fichier), et la macro ne veut pas s'arrêter.....:confused:
 

Pièces jointes

  • Test1.xlsm
    57.6 KB · Affichages: 33
  • Test1.xlsm
    57.6 KB · Affichages: 35
  • Test1.xlsm
    57.6 KB · Affichages: 36

camarchepas

XLDnaute Barbatruc
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
 

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 172
dernier inscrit
Aurelyan