Code qui ne s'exécute pas jusqu'au bout
Résolu/Fermé
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
-
8 juil. 2015 à 15:40
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 8 juil. 2015 à 17:16
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 8 juil. 2015 à 17:16
A voir également:
- Code qui ne s'exécute pas jusqu'au bout
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
5 réponses
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
8 juil. 2015 à 16:42
8 juil. 2015 à 16:42
Bonjour
Sauf erreur de ma part, le problème c'est que DL est fixé au départ, or il évolue au fur et à mesure qu'on insère des lignes, comme on rajoute 3 lignes à chaque insertion, il faut donc multiplier DL par 3
A esayer
Cdlt
Sauf erreur de ma part, le problème c'est que DL est fixé au départ, or il évolue au fur et à mesure qu'on insère des lignes, comme on rajoute 3 lignes à chaque insertion, il faut donc multiplier DL par 3
Sub Macro_TEST() Dim DL As Long DL = Range("B65000").End(xlUp).Row For i = 13 To DL * 3 Compte = CStr(Sheets(1).Range("B" & i).Value) Compte_1 = CStr(Sheets(1).Range("B" & i - 1).Value) If Compte = "40301000" And Compte_1 <> "40301000" And Compte_1 <> "" Then Rows(i & ":" & i + 2).Insert Shift:=xlDown If Compte = "40302000" And Compte_1 <> "40302000" And Compte_1 <> "" Then Rows(i & ":" & i + 2).Insert Shift:=xlDown If Compte = "40303000" And Compte_1 <> "40303000" And Compte_1 <> "" Then Rows(i & ":" & i + 2).Insert Shift:=xlDown If Compte = "40304000" And Compte_1 <> "40304000" And Compte_1 <> "" Then Rows(i & ":" & i + 2).Insert Shift:=xlDown If Compte = "40305000" And Compte_1 <> "40305000" And Compte_1 <> "" Then Rows(i & ":" & i + 2).Insert Shift:=xlDown If Compte = "40306000" And Compte_1 <> "40306000" And Compte_1 <> "" Then Rows(i & ":" & i + 2).Insert Shift:=xlDown If Compte = "40307000" And Compte_1 <> "40307000" And Compte_1 <> "" Then Rows(i & ":" & i + 2).Insert Shift:=xlDown If Compte = "40308000" And Compte_1 <> "40308000" And Compte_1 <> "" Then Rows(i & ":" & i + 2).Insert Shift:=xlDown If Compte = "40309000" And Compte_1 <> "40309000" And Compte_1 <> "" Then Rows(i & ":" & i + 2).Insert Shift:=xlDown If Compte = "40310000" And Compte_1 <> "40310000" And Compte_1 <> "" Then Rows(i & ":" & i + 2).Insert Shift:=xlDown If Compte = "40311000" And Compte_1 <> "40311000" And Compte_1 <> "" Then Rows(i & ":" & i + 2).Insert Shift:=xlDown If Compte = "40312000" And Compte_1 <> "40312000" And Compte_1 <> "" Then Rows(i & ":" & i + 2).Insert Shift:=xlDown Next i End Sub
A esayer
Cdlt
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
8 juil. 2015 à 16:17
8 juil. 2015 à 16:17
D'autant plus que si je relance le code, il continue sur les 40309000 puis s'arrête. Puis je le relance et là il va jusqu'à la fin..
Merci de votre aide.
Merci de votre aide.
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
Modifié par ThauTheme le 8/07/2015 à 16:35
Modifié par ThauTheme le 8/07/2015 à 16:35
Bonjour Kuartz, bonjour le forum,
Peut-être on pourrait simplifier le code code ça :
Qu'est-ce que ça donne ?
À plus,
ThauTheme
Peut-être on pourrait simplifier le code code ça :
Sub Macro_TEST() Dim DL As Long Dim Compte As String Dim Compte_1 As String Dim I As Long Dim J As Long Dim K As Long DL = Range("B65000").End(xlUp).Row For I = 13 To DL Compte = CStr(Sheets(1).Range("B" & I).Value) Compte_1 = CStr(Sheets(1).Range("B" & I - 1).Value) For J = 1000 To 9000 Step 1000 If Compte = "4030" & CStr(J) Then If Compte <> Compte_1 And Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove End If End If Next J For K = 10000 To 12000 Step 1000 If Compte = "403" & CStr(K) Then If Compte <> Compte_1 And Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove End If End If Next K Next I End Sub
Qu'est-ce que ça donne ?
À plus,
ThauTheme
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
8 juil. 2015 à 16:45
8 juil. 2015 à 16:45
Re,
J'aurais bien mis +10 mais je peux pas...
J'aurais bien mis +10 mais je peux pas...
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
8 juil. 2015 à 17:02
8 juil. 2015 à 17:02
Merci ThauTheme pour l'encouragement, mais notre ami Kuartz n'a visiblement pas lu toutes les réponses, puisque je constate que l'erreur persiste toujours.
Kuartz, j'ai donné une réponse un peu plus haut qui est peut-être la solution à vos problèmes.
Cdlt
Kuartz, j'ai donné une réponse un peu plus haut qui est peut-être la solution à vos problèmes.
Cdlt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
8 juil. 2015 à 16:53
8 juil. 2015 à 16:53
C'est vraiment bizarre ca ne marche pas....
Je vais tenter de vous envoyer le fichier via Cjoint.
Par contre, je vais vous donner le code exact, le problème est que si j'ai un 40301000 ou un 40302000, les actions à réaliser ne sont vraiment pas les mêmes.
Voici mon code final (qui ne marche pas sauf si je le répète plusieurs fois) :
Pardon pour la longueur....
Je vais tenter de vous envoyer le fichier via Cjoint.
Par contre, je vais vous donner le code exact, le problème est que si j'ai un 40301000 ou un 40302000, les actions à réaliser ne sont vraiment pas les mêmes.
Voici mon code final (qui ne marche pas sauf si je le répète plusieurs fois) :
Sub Macro_TEST() Dim DL As Long DL = Range("B65000").End(xlUp).Row For I = 13 To DL Compte = CStr(Sheets(1).Range("B" & I).Value) Compte_1 = CStr(Sheets(1).Range("B" & I - 1).Value) If Compte = "40301000" Then If Compte_1 <> "40301000" Then If Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range(Cells(I + 1, 2), Cells(I + 1, 11)).Merge Range("B" & I + 1) = "Effets à payer de Janvier" Range("B" & I + 1).Font.Bold = True Range("B" & I + 1).HorizontalAlignment = xlCenter With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End If End If End If If Compte = "40302000" Then If Compte_1 <> "40302000" Then If Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range(Cells(I + 1, 2), Cells(I + 1, 11)).Merge Range("B" & I + 1) = "Effets à payer de Février" Range("B" & I + 1).Font.Bold = True Range("B" & I + 1).HorizontalAlignment = xlCenter With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End If End If End If If Compte = "40303000" Then If Compte_1 <> "40303000" Then If Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range(Cells(I + 1, 2), Cells(I + 1, 11)).Merge Range("B" & I + 1) = "Effets à payer de Mars" Range("B" & I + 1).Font.Bold = True Range("B" & I + 1).HorizontalAlignment = xlCenter With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End If End If End If If Compte = "40304000" Then If Compte_1 <> "40304000" Then If Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range(Cells(I + 1, 2), Cells(I + 1, 11)).Merge Range("B" & I + 1) = "Effets à payer d'Avril" Range("B" & I + 1).Font.Bold = True Range("B" & I + 1).HorizontalAlignment = xlCenter With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End If End If End If If Compte = "40305000" Then If Compte_1 <> "40305000" Then If Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range(Cells(I + 1, 2), Cells(I + 1, 11)).Merge Range("B" & I + 1) = "Effets à payer de Mai" Range("B" & I + 1).Font.Bold = True Range("B" & I + 1).HorizontalAlignment = xlCenter With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End If End If End If If Compte = "40306000" Then If Compte_1 <> "40306000" Then If Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range(Cells(I + 1, 2), Cells(I + 1, 11)).Merge Range("B" & I + 1) = "Effets à payer de Juin" Range("B" & I + 1).Font.Bold = True Range("B" & I + 1).HorizontalAlignment = xlCenter With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End If End If End If If Compte = "40307000" Then If Compte_1 <> "40307000" Then If Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range(Cells(I + 1, 2), Cells(I + 1, 11)).Merge Range("B" & I + 1) = "Effets à payer de Juillet" Range("B" & I + 1).Font.Bold = True Range("B" & I + 1).HorizontalAlignment = xlCenter With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End If End If End If If Compte = "40308000" Then If Compte_1 <> "40308000" Then If Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range(Cells(I + 1, 2), Cells(I + 1, 11)).Merge Range("B" & I + 1) = "Effets à payer de Août" Range("B" & I + 1).Font.Bold = True Range("B" & I + 1).HorizontalAlignment = xlCenter With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End If End If End If If Compte = "40309000" Then If Compte_1 <> "40309000" Then If Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range(Cells(I + 1, 2), Cells(I + 1, 11)).Merge Range("B" & I + 1) = "Effets à payer de Septembre" Range("B" & I + 1).Font.Bold = True Range("B" & I + 1).HorizontalAlignment = xlCenter With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End If End If End If If Compte = "40310000" Then If Compte_1 <> "40310000" Then If Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range(Cells(I + 1, 2), Cells(I + 1, 11)).Merge Range("B" & I + 1) = "Effets à payer de Octobre" Range("B" & I + 1).Font.Bold = True Range("B" & I + 1).HorizontalAlignment = xlCenter With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End If End If End If If Compte = "40311000" Then If Compte_1 <> "40311000" Then If Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range(Cells(I + 1, 2), Cells(I + 1, 11)).Merge Range("B" & I + 1) = "Effets à payer de Novembre" Range("B" & I + 1).Font.Bold = True Range("B" & I + 1).HorizontalAlignment = xlCenter With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End If End If End If If Compte = "40312000" Then If Compte_1 <> "40312000" Then If Compte_1 <> "" Then Rows(I & ":" & I + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range(Cells(I + 1, 2), Cells(I + 1, 11)).Merge Range("B" & I + 1) = "Effets à payer de Décembre" Range("B" & I + 1).Font.Bold = True Range("B" & I + 1).HorizontalAlignment = xlCenter With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Range(Cells(I + 1, 2), Cells(I + 1, 11)).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End If End If End If Next I End Sub
Pardon pour la longueur....
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
Modifié par Kuartz le 8/07/2015 à 17:09
Modifié par Kuartz le 8/07/2015 à 17:09
Fichier anonymé : https://www.cjoint.com/c/EGipcAG1WQf
Votre macro est en module 4, la mienne en module 5.
Vous allez constater le problème.
Edit : Le code pour accéder au VBA : Fretjerome
Votre macro est en module 4, la mienne en module 5.
Vous allez constater le problème.
Edit : Le code pour accéder au VBA : Fretjerome
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
8 juil. 2015 à 17:07
8 juil. 2015 à 17:07
A la limite, je pourrais presque ré-éxécuter le code plusieurs fois à la chaîne étant donné qu'il faut répéter la macro plusieurs fois pour le code ailler jusqu'au bout mais bon.... C'est un peu ridicule...
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
8 juil. 2015 à 17:10
8 juil. 2015 à 17:10
Avez-vous appliquez ce que je vous ai de faire? voir post 6 et 3
Sur votre fichier, l'accés à vos macros est verrouillé
Sur votre fichier, l'accés à vos macros est verrouillé
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
>
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
8 juil. 2015 à 17:13
8 juil. 2015 à 17:13
Je teste immédiatement. (Pardon de ne pas avoir vu votre réponse, je ne comprend pas pourquoi je les vois aussi tardivement à chaque fois...)
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
8 juil. 2015 à 17:15
8 juil. 2015 à 17:15
Ca marche parfaitement, bravo vraiment. Et merci d'avoir répondu aussi vite.
Merci encore.
Merci encore.