Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement

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 !

psychofred0

XLDnaute Nouveau
Bonjour,

Je me permets de vous solliciter car je rencontre une problématique que je ne suis pas en mesure d'expliquer.

Ci-dessous le code qui pose problème :
Code:
 'Supprimer les lignes lorsque la donnée "Appels pris" est = 0
vNbLignesAPP = Range("C8").CurrentRegion.Rows.Count
vComptAPP = 0
For vNumLigneAPP = 8 To vNbLignesAPP Step 1
    If Range("C" & vNumLigneAPP).Value = 0 Then Rows(vNumLigneAPP).Delete
    vComptAPP = vComptAPP + 1
Next vNumLigneAPP
MsgBox Prompt:=vComptAPP & "/" & vNbLignesAPP
'Corriger les cellules contenant une valeur en temps au mauvais format
'Boucle pour la DTC en colonne E
vNbLignesDTC = Range("F8").CurrentRegion.Rows.Count
vComptDTC = 0
For vNumLigneDTC = 8 To vNbLignesDTC Step 1
    If Left(Range("F" & vNumLigneDTC).Value, 1) = ":" Then Range("F" & vNumLigneDTC).Value = "00" & Range("F" & vNumLigneDTC).Value
    vComptDTC = vComptDTC + 1
Next vNumLigneDTC
MsgBox Prompt:=vComptDTC & "/" & vNbLignesDTC
'Boucle pour la DTT en colonne F
vNbLignesDTT = Range("G8").CurrentRegion.Rows.Count
vComptDTC = 0
For vNumLigneDTT = 8 To vNbLignesDTT Step 1
    If Left(Range("G" & vNumLigneDTT).Value, 1) = ":" Then Range("G" & vNumLigneDTT).Value = "00" & Range("G" & vNumLigneDTT).Value
    vComptDTT = vComptDTT + 1
Next vNumLigneDTT
MsgBox Prompt:=vComptDTT & "/" & vNbLignesDTT
'Boucle pour la DTG en colonne J
vNbLignesDTG = Range("K8").CurrentRegion.Rows.Count
vComptDTG = 0
For vNumLigneDTG = 8 To vNbLignesDTG Step 1
    If Left(Range("K" & vNumLigneDTG).Value, 1) = ":" Then Range("K" & vNumLigneDTG).Value = "00" & Range("K" & vNumLigneDTG).Value
    vComptDTG = vComptDTG + 1
Next vNumLigneDTG
MsgBox Prompt:=vComptDTG & "/" & vNbLignesDTG
'Boucle pour la DTCS en colonne O
vNbLignesDTCS = Range("O8").CurrentRegion.Rows.Count
vComptDTCS = 0
For vNumLigneDTCS = 8 To vNbLignesDTC Step 1
    If Left(Range("P" & vNumLigneDTCS).Value, 1) = ":" Then Range("P" & vNumLigneDTCS).Value = "00" & Range("P" & vNumLigneDTCS).Value
    vComptDTCS = vComptDTCS + 1
Next vNumLigneDTCS
MsgBox Prompt:=vComptDTCS & "/" & vNbLignesDTCS

Le code fonctionne très bien, mais certaines lignes sont zappées sans raison
J'ai ajouté un compteur sur chaque boucle, et j'ai toujours le même résultats : 7 lignes et/ou cellules sont zappées du traitement (sur l'exemple que j'utilise)

Je ne sais pas pourquoi, ni comment résoudre cette problématique... 😡😡😡
L'un d'entre vous aurait-il une idée ?

En vous remerciant par avance,
 
Re : Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement

Bonjour psychofred0,

Pas regardé tout le code, mais d'emblée je te renverrais à de nombreuses discussions sur le même sujet:
quand tu supprimes des lignes, il faut commencer par la "fin" et "remonter". Ta boucle For devrait devenir:
Code:
For vNumLigneAPP = vNbLignesAPP To 8 Step -1
 
Dernière édition:
Re : Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement

Bonjour,

j'ai le cerveau au ralenti mais...
For vNumLigneDTCS = 8 To vNbLignesDTCS Step 1
If Left(Range("P" & vNumLigneDTCS).Value, 1) = ":" Then Range("P" & vNumLigneDTCS).Value = "00" & Range("P" & vNumLigneDTCS).Value
vComptDTCS = vComptDTCS + 1
Next vNumLigneDTCS
 
Re : Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement

Bonjour Modeste,

Merci pour cette information, je vais corriger cette boucle, mais cela n'explique pas pourquoi mes autres boucles qui ne font que du remplacement de contenu zappent des cellules...
 
Re : Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement

Bonjour Combory,

J'ai corrigé cette faute de frappe 🙂
Merci pour ton oeil expert 🙂 🙂

Toujours pas d'idée concernant ma problématique initiale ?

Merci par avance,
 
Re : Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement


Je viens de relancer ma boucle sous ce format, et là encore, la boucle ne scanne pas 100% des lignes. 91/98 lignes sont scannées ! 🙁 🙁
 
Re : Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement

Re,

Sans voir le fichier et à moins que l'oeil de lynx de combory détecte une autre erreur, ça va être compliqué! On ne peut pas savoir si, de temps en temps, il n'y aurait pas un caractère "parasite" avant ce fameux ':' qui devrait être le premier caractère à gauche? Ou si Range("C" & vNumLigneAPP).Value = 0 est effectivement à 0?

Ou alors, exécute en pas-à-pas ou en mettant des points d'arrêts, pour déterminer quelles sont les lignes ignorées!
 
Re : Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement

Bon, finalement, j'ai modifié ma structure de tableau (à la base en faisant une mauvaise manip) et à présent toutes mes boucles fonctionnement bien.
A la base, mon tableau à retravailler commence en ligne 7 (entête) puis données en dessous, pouvant aller jusqu'à 100 lignes environ.
Maintenant il commence en ligne 1 (entête). Les boucles scannent 100% des données à scanner et font ce qu'elles ont à faire : supprimer ligne si data = 0 dans la cellule en colonne B, puis ajout des 00 lorsque les temps sont affichés directement en :00:00 vs 00:00:00

Pourquoi ? Telle est la question... Mais bon maintenant que cela fonctionne je ne vais pas me plaindre.
Je garde quand même dans un coin le code avec ma structure de tableau précédente car j'aimerais bien savoir où j'ai merdé.

Merci à vous pour votre aide 🙂

Bonne journée,
 
Re : Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement

Re,
et bonjour Modeste,

Si toutes les boucles de "remplacement sont identiques", il y a un bug sur la dernière :
'Boucle pour la DTCS en colonne O
vNbLignesDTCS = Range("P8").CurrentRegion.Rows.Count
vComptDTCS = 0
For vNumLigneDTCS = 8 To vNbLignesDTC Step 1
If Left(Range("P" & vNumLigneDTCS).Value, 1) = ":" Then Range("P" & vNumLigneDTCS).Value = "00" & Range("P" & vNumLigneDTCS).Value
vComptDTCS = vComptDTCS + 1
Next vNumLigneDTCS
MsgBox Prompt:=vComptDTCS & "/" & vNbLignesDTCS

un fichier STP, ce sera plus lisible. 😎
 
Re : Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement

Modeste, Combory,
Voici le fichier avec le code que j'ai fait.
L'onglet Temp permet de récupérer les données avant traitement si vous voulez le tester.

Et encore merci pour votre aide 🙂
 

Pièces jointes

Re : Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement

J'ai regardé vite fait avec mon cerveau au ralenti 😕
sur ton problème de départ, tu fais :
vNbLignesAPP = Range("C8").CurrentRegion.Rows.Count ce qui donne 98. Puis tu boucles de 8 à 98, tu ne prends donc pas toutes les lignes.
Il faut que tu fasses : vNbLignesAPP = Range("C65535")..End(xlUp).row pour avoir la première cellule non-vide à partir du bas et ça doit marcher.
Modeste à toujours raison 😉
 
Re : Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement

Combory,

J'ai justement modifié mon code entre temps.

Merci pour l'aide et les conseils.

NB : Je suis novice en développement VBA, je viens juste de faire la formation VBA... 🙂
 
Re : Boucle - Fonctionnement Etonnant - Oubli certaines lignes dans le traitement

finalement, pas encore au dodo.
Evites le currentregion, je sais pas trop comment ça réagit.
pour info, j'ai jamais eu de formation.
il faut pratiquer, pratiquer, pratiquer....
et utiliser excel-download... en oubliant pas de mettre un fichier exemple (chiffre bidons, noms bidons,....)

l'on est content de rendre service. 😎
 
- 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
4
Affichages
177
Réponses
8
Affichages
233
Réponses
2
Affichages
153
Réponses
5
Affichages
232
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…