Autres [Résolu] Vérification macro pas à pas

Macpoy

XLDnaute Impliqué
Bonsoir le forum,
il y a quelques années je créait des macro (parfois avec votre aide) et il était possible de vérifier la valeur qu'allait renvoyer la macro (en mode pas à pas par f8) en passant le curseur sur la ligne de la macro en cours. après changement de matériel et réinstallation d'Excel (2003) je n'ai plus cette aide . sauriez vous quels paramètres me permettraient de retrouver cette astuce de programmation ? merci d'avance pour vos réponses.
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir Macpoy,

ça fait bien longtemps maintenant que Microsoft a cessé le support d'Excel 2003 !
(pour Excel 2007 aussi, c'est pour dire !) ; de plus, il paraît qu'Excel 2003 ne fonctionne
pas toujours correctement sur Windows 7 ou Windows 10.

si tu es en mode débogage et que tu as mis un point d'arrêt (ligne rouge brique),
ça doit normalement mettre dans une bulle la valeur de la variable pointée
par ton curseur souris (mais seulement si cette variable est dans la portée en cours).

(je n'ai rien d'autre à proposer)


soan
 

Macpoy

XLDnaute Impliqué
Bonsoir Macpoy,

ça fait bien longtemps maintenant que Microsoft a cessé le support d'Excel 2003 !
(pour Excel 2007 aussi, c'est pour dire !) ; de plus, il paraît qu'Excel 2003 ne fonctionne
pas toujours correctement sur Windows 7 ou Windows 10.

si tu es en mode débogage et que tu as mis un point d'arrêt (ligne rouge brique),
ça doit normalement mettre dans une bulle la valeur de la variable pointée
par ton curseur souris (mais seulement si cette variable est dans la portée en cours).

(je n'ai rien d'autre à proposer)


soan
bonsoir Soan, que veux tu dire par : mais seulement si cette variable est dans la portée en cours ? car le point d’arrêt est placé, et par la touche f8 je passe de ligne en ligne en essayant de glisser mon curseur sur la ligne mais il n'apparait point d'information !!
 

soan

XLDnaute Barbatruc
Inactif
@Macpoy

Image 1.jpg


sur cette 1ère image : no problem : on voit la valeur 5 de k, en haut
dans la bulle jaune, ou en bas dans la fenêtre "Espions".




Image 2.jpg


sur cette 2ème image, comme la variable k n'est plus dans
la portée en cours (c'est-à-dire dans la portée de la sub Job), alors :

a) en bas, dans la fenêtre "Espions", champ "Valeur", il y a
le texte « <Hors du contexte> » (le contexte étant celui de la
sub Job)
; à droite, champ "Contexte" : Module1.Job

b) en haut, si tu pointes k avec ton curseur souris, y'a plus
de bulle jaune car c'est hors contexte.


soan
 

Macpoy

XLDnaute Impliqué
@Macpoy

Regarde la pièce jointe 1092708

sur cette 1ère image : no problem : on voit la valeur 5 de k, en haut
dans la bulle jaune, ou en bas dans la fenêtre "Espions".




Regarde la pièce jointe 1092709

sur cette 2ème image, comme la variable k n'est plus dans
la portée en cours (c'est-à-dire dans la portée de la sub Job), alors :

a) en bas, dans la fenêtre "Espions", champ "Valeur", il y a
le texte « <Hors du contexte> » (le contexte étant celui de la
sub Job)
; à droite, champ "Contexte" : Module1.Job

b) en haut, si tu pointes k avec ton curseur souris, y'a plus
de bulle jaune car c'est hors contexte.


soan
même avec la fenêtre espion, aucune indications !! surprenant, et c'est là tout mon problème !!
 

soan

XLDnaute Barbatruc
Inactif
réponse à ton post #7 :

pour ton instruction :


Sheets("Facture").Range("A14").Value = Sheets("ENCAISSEMENT").Range("F21").Value

d'habitude, je mets des variables dans la fenêtre "Espions" ;
j'ai jamais essayé de mettre toute une expression, et j'sais
même pas si c'est possible de le faire !

mais en haut, en pointant Sheets("Facture").Range("A14").Value,
tu dois avoir la valeur dans une bulle jaune.

idem pour Sheets("ENCAISSEMENT").Range("F21").Value.


soan
 

Macpoy

XLDnaute Impliqué
réponse à ton post #7 :

pour ton instruction :


Sheets("Facture").Range("A14").Value = Sheets("ENCAISSEMENT").Range("F21").Value

d'habitude, je mets des variables dans la fenêtre "Espions" ;
j'ai jamais essayé de mettre toute une expression, et j'sais
même pas si c'est possible de le faire !

mais en haut, en pointant Sheets("Facture").Range("A14").Value,
tu dois avoir la valeur dans une bulle jaune.

idem pour Sheets("ENCAISSEMENT").Range("F21").Value.


soan
voila mon problème, c'est que je n'ai pas cette bulle jaune !!
 

soan

XLDnaute Barbatruc
Inactif
@Macpoy

réponse à ton post #9 et ton post #11 :

mon post #10 y répond déjà en partie ; voici un complément :

la fenêtre "Espions" est faite pour afficher la valeur d'une variable VBA,
y compris une variable Tableau qui montrerait des valeurs de cellules,
mais pas pour afficher directement les cellule d'une feuille de calcul.

or c'est bien le cas avec Sheets("Facture").Range("A14").Value :

c'est la valeur de la cellule A14, de la feuille "Facture".

idem pour : Sheets("ENCAISSEMENT").Range("F21").Value :

c'est la valeur de la cellule F21, de la feuille "ENCAISSEMENT".




pour info, tu peux écrire plus simplement :

[Facture!A14] = [ENCAISSEMENT!F21]

soan
 

Macpoy

XLDnaute Impliqué
@Macpoy

réponse à ton post #9 et ton post #11 :

mon post #10 y répond déjà en partie ; voici un complément :

la fenêtre "Espions" est faite pour afficher la valeur d'une variable VBA,
y compris une variable Tableau qui montrerait des valeurs de cellules,
mais pas pour afficher directement les cellule d'une feuille de calcul.

or c'est bien le cas avec Sheets("Facture").Range("A14").Value :

c'est la valeur de la cellule A14, de la feuille "Facture".

idem pour : Sheets("ENCAISSEMENT").Range("F21").Value :

c'est la valeur de la cellule F21, de la feuille "ENCAISSEMENT".




pour info, tu peux écrire plus simplement :

[Facture!A14] = [ENCAISSEMENT!F21]

soan
ah oui, c'est vrai j'avais oublié cette simplification, merci.
mais je suis sur une boucle qui doit réecrire chaque ligne d'une page sur une autre page tant qu'il y a quelque chose sur cette première page.
l'exemple que je t'avais mis, c'était pour te montrer que la fenêtre espion était vide .
Sub TestFact()
Dim d, i As Integer
For d = 6 To 21
If Sheets("ENCAISSEMENT").Range("F" & d).End(xlDown).Offset(-1, 0).Value <> "" Then
For i = 14 To 25
Sheets("Facture").Range("A" & i).End(xlUp).Offset(1, 0).Value = Sheets("ENCAISSEMENT").Range("F" & d).End(xlDown).Offset(-1, 0).Value
Sheets("Facture").Range("F" & i).End(xlUp).Offset(1, 0).Value = Sheets("ENCAISSEMENT").Range("G" & d).End(xlDown).Offset(-1, 0).Value

Next i
End If

Next d

End Sub
 

soan

XLDnaute Barbatruc
Inactif
@Macpoy (réponse à ton post #13) :

difficile de voir sans ton fichier, mais je crois que le code VBA
ci-dessous devrait aller ; bien sûr, je n'ai pas pu le tester ;
à toi de le faire avec la plus grande prudence, et si besoin,
d'adapter ce qui ne va pas.


VB:
Sub TestFact()
  If ActiveSheet.Name <> "ENCAISSEMENT" Then Exit Sub
  Dim dlg&: dlg = Cells(Rows.Count, "F").End(xlUp).Row: If dlg < 6 Then Exit Sub
  Dim c01 As Range, c02 As Range, lg1&, lg2&
  lg2 = 14: Application.ScreenUpdating = 0
  With Worksheets("Facture")
    For lg1 = 6 To dlg
      Set c01 = Cells(lg1, "F"): Set c02 = c01.Offset(, 1)
      If c01 <> "" Then .Cells(lg2, "A") = c01
      If c02 <> "" Then .Cells(lg2, "F") = c02
      lg2 = lg2 + 1
    Next lg1
    .Select
  End With
End Sub

attention : cette sub est prévue pour être lancée à partir de la feuille
"ENCAISSEMENT" (ainsi, tu peux voir les données qui vont être copiées sur la
feuille "Facture")
; en fin de sub, ça va sur la feuille "Facture" pour que
tu puisses y voir les données qui ont été copiées.

si tu veux rester sur la feuille "ENCAISSEMENT" après exécution de
la macro, il te suffit d'enlever le .Select qui est avant End With.


soan
 
Dernière édition:

Macpoy

XLDnaute Impliqué
@Macpoy (réponse à ton post #13) :

difficile de voir sans ton fichier, mais je crois que le code VBA
ci-dessous devrait aller ; bien sûr, je n'ai pas pu le tester ;
à toi de le faire avec la plus grande prudence, et si besoin,
d'adapter ce qui ne va pas.


VB:
Sub TestFact()
  If ActiveSheet.Name <> "ENCAISSEMENT" Then Exit Sub
  Dim dlg&: dlg = Cells(Rows.Count, "F").End(xlUp).Row: If dlg < 6 Then Exit Sub
  Dim c01 As Range, c02 As Range, lg1&, lg2&
  lg2 = 14: Application.ScreenUpdating = 0
  With Worksheets("Facture")
    For lg1 = 6 To dlg
      Set c01 = Cells(lg1, "F"): Set c02 = c01.Offset(, 1)
      If c01 <> "" Then .Cells(lg2, "A") = c01
      If c02 <> "" Then .Cells(lg2, "F") = c02
      lg2 = lg2 + 1
    Next lg1
    .Select
  End With
End Sub

attention : cette sub est prévue pour être lancée à partir de la feuille
"ENCAISSEMENT" (ainsi, tu peux voir les données qui vont être copiées sur la
feuille "Facture")
; en fin de sub, ça va sur la feuille "Facture" pour que
tu puisses y voir les données qui ont été copiées.

si tu veux rester sur la feuille "ENCAISSEMENT" après exécution de
la macro, il te suffit d'enlever le .Select qui est avant End With.


soan
Merci beaucoup, superbe amélioration que je vais m'empresser d'adapter à mon classeur.
il n'en reste pas moins que je n'ai toujours pas de "bulle jaune" qui me montre la valeur lorsque je fait du pas à pas .
 

Discussions similaires

Statistiques des forums

Discussions
312 216
Messages
2 086 344
Membres
103 194
dernier inscrit
rtison