|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
Bonjour à tous et à toutes
J'ai une macro dont le test ci dessous fonctionnent très bien sous excel 2003 et dès que je test celle-ci sous excel 2010 ,le test renvoie toujours FALSE même si le contenu des cellules testées sont pareils Quelqu'un aurait une idée ? Code :
Merci à tous et a toutes |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Essaie en rajoutant un .Value sur les Cells. Peut-être qu'en 2010, il vérifie que tout est exactement pareil (le format...).
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#3 | ||
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
Bonjour et merci a toi pour ton aide
J'ai créé un fichier sous excel 2010 ,et saisit deux valeurs dans 2 cellules différentes. les valeurs saisies sont identiques. Donc j'ai fais un test et ca ne change pas grand chose le .Value ... Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Les deux tests te donnent "Le résultat est vrai" ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#5 | |
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 353 ![]() |
Bonjour,
Citation:
didier
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
|
|
|
|
00
|
|
|
#6 | ||
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
j'avoue ne pas avoir saisit
On va dire que dans Cells(2, 2) il y a la valeur 15 et dans Cells(4, 1) il y a la valeur 15 également donc si je reprends le code Code :
End Sub |
||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Tu peux regarder dans le débuggeur ce que te donne Cells(2, 2).Value et Cells(4, 1).Value et nous donner quel est leur type ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
Voici ce que j'obtiens dans la fenetres variables locales lorsque j'éxécute en mode Déboggage
- : Cells : : Range/Range : AddIndent : Faux : Variant/Boolean : AllowEdit : Vrai : Boolean Merci |
|
|
00
|
|
|
#9 | ||
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 353 ![]() |
Citation:
c'est toi qui a écrit : Citation:
![]() vu que VBA = logique ![]() Didiier
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
|
||
|
|
00
|
|
|
#10 | ||
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
re,
je poste à nouveau le code Code :
'LIGNE a ne plus tenir compte MsgBox "la valeur de la cellule Ligne 2 colonne 2 est de " & Cells(2, 2) - Cells(4, 1) 'Ligne a ne plus tenir compte MsgBox "la valeur de la cellule Ligne 2 colonne 2 est de " & Cells(2, 2).Value - Cells(4, 1).Value mais c'est deux lignes ne servent a rien car au depart j'avais mis des valeurs différentes et tenté une soustraction pour voir si il interprete comme des chiffres ...Désolé j'aurai du enlever cela car ca prete a confusion.. c'est juste le test qui pose probleme comme j'ai expliqué plus haut : Donc dans les deux cas c'est la meme chose en faites pour lui ce n'est pas les memes valeur qu'on mette oui ou non le .VALUE Merci bien |
||
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Ce que je te suggérais, c'était de mettre Cells(2, 2).Value et Cells(4, 1).Value en espion, pas Cells.
Normalement leur valeur sera 15 et le type Variant/Long ou Variant/Double. Je voulais savoir si les deux avaient bien la même valeur et le même type. Si ce n'est pas le cas, le problème vient sans doute de là et il faudra creuser pour savoir pourquoi le type est différent. Si c'est bien le cas, il faudrait mettre Cells(2, 2).Value = Cells(4, 1).Value en espion. Si ça donne False, c'est vraiment bizarre, mais je voulais être sûr que ce n'était pas une erreur de manip quelque part. Juste pour être sûr qu'il n'y a pas une confusion toute bête : tu envoies un message disant que le résultat en faux quand la vérification est vraie et inversement, c'était bien intentionnel ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#12 | ||
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
oui tout à fait cela est bien intentionnel.
car l'instruction suivante sous excel 2003 ne pose pas de probleme : If Cells(2, 2) = Cells(4, 1) je test ceci sous excel 2010 car le test ne fonctionne pas . si on met deux valeurs identiques dans les cellules sous office 2010 ils mettra toujours FALSE donc EST VRAI c'est très étrange,il doit avoir une autre façon de faire des comparaisons. En tout cas sous excel 2010 avec .Value ou non il passe dans le ELSE donc pour lui les valeurs ne sont jamais identiques malgré qu'on ai saisit des valeurs identiques dans les 2 cellules en dur sur le fichier Code :
|
||
|
|
00
|
|
|
#13 |
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 353 ![]() |
de toutes façons...
vu le soin que "debutVBA" met à construire ses exemples et à rédiger ses messages, il ne peut pas ne pas rencontrer de problème avec un code informatique quel qu’il soit ![]() Un minimum de réflexion et de concentration ainsi que de relecture est de mise dans les 2 cas.. PS : pour preuve, il abandonne carrément les balises de code utilisées dès le départ car privilégier la lisibilité ne sert à rien face aux gens qui ne pigent rien que nous sommes didier
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
|
|
|
00
|
|
|
#14 |
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
Désolé "Ormonth",
Il est vrai que je suis pas très performant ,je ferai en sorte également d'être plus rigoureux lors de mes POSTS .. Merci à toi |
|
|
00
|
|
|
#15 | ||
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 353 ![]() |
@debutVBA
vois ce lien sur les opérateurs logiques : http://www.developpez.net/forums/d11...ect-case-or/#7 lorsque tu écrits :: Code :
retourne Vrai, ton Then va passer logiquement à la ligne suivante où tu indiques : ??? Didier
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
|
||
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Je ne suis pas sous Excel 2010, mais il y a forcément une explication rationnelle à ton problème. D'où les tests sur les espions que je te demandais de faire (tu ne m'as pas répondu d'ailleurs
D'ailleurs de manière générale, c'est toujours comme ça qu'il faut procéder quand on a un bug, il faut passer en mode débuggeur, mettre des espions sur les variables, décomposer les calculs, les tests... Pour trouver exactement où ça pose problème et donc faire une recherche plus ciblée. @Ormonth : Je suis d'accord que debutVBA n'est pas très clair, mais je pense qu'on est maintenant d'accord sur le fait que son test passe dans le Else et affiche la MsgBox "Le résultat est vrai". Ce qui implique un False sur la condition. Reste maintenant à déterminer pourquoi on a un False au lieu d'un True. D'où mes questions sur les valeurs des cellules. @debutVBA : Tu n'aurais pas tout simplement inverser les lignes et les colonnes dans le Cells par hasard ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#17 |
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 353 ![]() |
@debutVBA, Pour faire simple :
tu tapes ceci dans la fenêtre exécution de ton éditeur VBE suivi d'un ENTER et tu auras direct la valeur du test qu'il retourne . La propriété Cells te retourne un objet Range qui a pour propriété par défaut Value justement, qu'il n'est pas mauvais de préciser de façon explicite. Ça évite les soucis potentiels d'interprétation. Cordialement, Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points Didier
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
|
|
|
00
|
|
|
#18 | |||
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 353 ![]() |
Citation:
Code :
Que ce qu'il retourne soit une assertion fausse vient de sa rédaction comme expliqué en #16 Cordialement, Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points Didier
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
|
|||
|
|
00
|
|
|
#19 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Je suis d'accord avec toi Ormonth sur ce que ça DEVRAIT faire ! Mais après, ce n'est a priori pas ce qui se passe pour debutVBA.
Et je voulais être sûr qu'il avait bien mis 15 en B2 et en A4, car si c'est le cas, à moins qu'il ait une version anarchique d'Excel 2010, ça devrait marcher comme tu le dis. L'erreur est certainement humaine et j'essaie de trouver d'où elle vient. Ma première idée était de tester le type que VBA donnait à la valeur car si par un curieux hasard il considère l'un comme un réel et l'autre comme un entier, il peut y avoir un problème de conversion. On a tous connu le 1 qui se transforme en 1.000000000005487844547... EDIT : debutVBA nous précise bien qu'il a le message "Le résultat est vrai" ce qui correspond à un test "faux". C'est peut-être ça que n'as pas vu dans ce petit fouillis
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#20 |
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 353 ![]() |
OK avec toi,
c'est pourquoi le plus simple, à mon sens est le test proposé en #19 qui ne demande même pas une procédure. Sinon aller mettre en message c'est faux dans un test à l'endroit où c'est juste ![]()
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com