Re : Sélection de la ligne
Fab117 à dit:
Salut Gorfael,
Je n'ai pas tout saisi ce que tu m'as expliqué.
Si tu as un moment, je joins mon fichier en document attaché.
Merci.
Fab
Salut
Je me gausse ouaff, ouaff, ouaff
Voilà ce qui arrive quand on utilise des variables à lettre unique en minuscule, un code issu de code automatique et qu'on ne sait pas se servir des outils de debuggage (pourquoi ça me rappelle quelque chose ? Moi, j'ai jamais fait ça, mon code était toujours (presque) parfait).
À force de travailler sur le code, on en oublie ce qu'on cherche à faire. Et comme on ne se sent pas à l'aise sur le code, on pense qu'on a fait une erreur dans la syntaxe du code et pas dans ce que doit faire le code. Ce genre de truc ne m'est jamais arrivé (tu parles
🙂 )..
Comme personne n'est parfait (à part moi), Excel prévoit certaine facilité pour gérer les problèmes de code
Le mode Pas-à-pas (pas toujours accessible suivant les instructions).
Quand tu es en mode Pas-àpas, une action sur la touche F8 fait
Exécuter la ligne en surlignage (jaune par défaut)
enlever le surlignage
pointer la ligne suivant à exécuter, la surligner
Attendre une autre action
Mais quand tu as un bout de code qui fonctionne, tester 1000 lignes par exemple, ça devient vite fastidieux. Tu veux bien le faire une fois, mais t'as pas envie de bouziller ta touche F8 et ton index pour une séquence de code qui fonctionne bien
Donc Excel à prévu des "Points d'arrêt": Quand une instruction est exécutable, si tu cliques sur la barre verticale à gauche de la ligne (Ou menu Derbogage - j'évite F9 pour pas me tromper), un gros point marron apparaît et la ligne passe en surligné marron
Une action sur F5 exécute la macro jusqu'à la sortie ou jusqu'au premier point d'arrêt rencontré : ça permet de "sauter" les parties déjà validées du code.
dans ton code, dans la séquence de coloriage, si t'en mets un sur la ligne
If IsDate(Range("E" & k)) Then
et que tu lances la macro avec F5 le pointeur d'exécution s'arrête dessus
avant de l'exécuter
si tu ballade ton curseur avec la souris sur cette instruction, une bulle va apparaître avec variable = valeur
sur k => k = 4 (par exemple)
sur range => Range("E" & k) = "Produit 25"
Si tu affiches la fenêtre "variables locales", tu peux même suivre l'état à chaque ligne de toutes tes variables
Tu sélectionnes dans cette ligne Range("E" & k) => clic-droit>>ajouter un espion
Tu vérifies que l'instruction est correcte (qu'il ne manque pas une parenthèse par exemple) => ok, une nouvelle fenêtre s'ouvre dans laquelle, il y a une ligne qui te donne la valeur de l'espion
et donc avec Points d'arrêt, F5, F8, tu peux suivre l'évolution des variables du code, avec quelques restrictions :
C'est l'état des variable avant la ligne en surbrillance
L'espion doit être définit cmplêtement si tu ne veux pas qu'il retourne sa veste
(comme on à pas définit la feuille, c'est le range d'Activesheet qui est prise en compte)
Avec tout ça, en 2 minutes tu te rends compte que ton erreur de code n'en est pas une : la date est en colonne H pas E
😛
Je vais quand même regarder ton code et le commenter, puis faire la même macro, mais comme moi je la conçois : si tu regardes les sujets sur le forum, tu verras que pour un même résultat, il y a autant de manière d'y arriver qu'il y a de forumeurs (ou presque, parce que quand on trouve un code meilleur et qui nous convient, on l'adopte).
Le but n'est pas de faire le "meilleur code", mais celui qui te semble le plus adapté, et que tu comprends
A+