Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2011, 10h13   #1
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut Compatibilité MACRO 2003 ET 2010

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 :
1
2
3
4
5
6
7
8
9
10
11
12
 
 
x = 2
 
For Compteur = 1 To 5
 
    If ThisWorkbook.Worksheets("MaFEUILLE1").Cells(1, x) = ThisWorkbook.Worksheets("MaFEUILLE2").Cells(15, 4) Then
    ref_col = x
    Else
    x = x + 1
    End If
Next

Merci à tous et a toutes
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 10h37   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 10h49   #3
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut Suite reponse

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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
 
Sub test()
 
Dim w As Workbook
Set w = Workbooks("TESSST.xlsm")
Dim maFeuille
Set maFeuille = w.Worksheets(1)
 
w.Activate
maFeuille.Activate
 
 
MsgBox "la valeur de la cellule Ligne 2 colonne 2 est de " & Cells(2, 2) - Cells(4, 1)
 
MsgBox "la valeur de la cellule Ligne 2 colonne 2 est de " & Cells(2, 2).Value - Cells(4, 1).Value
 
If Cells(2, 2) = Cells(4, 1) Then
MsgBox "le resultat est faux "
 
Else
MsgBox "le resultat est vrai "
 
End If
 
 
If Cells(2, 2).Value = Cells(4, 1).Value Then
MsgBox "le resultat est faux "
 
Else
MsgBox "le resultat est vrai  "
 
 
 
 
End If
 
 
End Sub
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 11h12   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 11h18   #5
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

Citation:
Cells(2, 2) - Cells(4, 1)
si les deux valeurs sont identiques, comme annoncé retournera zéro, donc les test seront faux

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 !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 11h48   #6
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
If Cells(2, 2) = Cells(4, 1) Then  'ici 15 est bien egale a 15 donc doit afficher
le resultat est faux mais affiche "EST VRAI"
MsgBox "le resultat est faux "
 
Else
MsgBox "le resultat est vrai "
 
End If
 
 
If Cells(2, 2).Value = Cells(4, 1).Value Then 'je mets le .VALUE ,donc 15 est bien egale a 15  donc doit m'afficher est faux mais m'affiche "est VRAI"
MsgBox "le resultat est faux "
 
Else
MsgBox "le resultat est vrai  "
 
 
 
 
End If
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


End Sub
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 11h59   #7
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 12h16   #8
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut Suite reponse compatibilité macro

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
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 12h50   #9
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Citation:
Envoyé par debutVBA Voir le message
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

c'est toi qui a écrit :

Citation:
MsgBox "la valeur de la cellule Ligne 2 colonne 2 est de " & Cells(2, 2) - Cells(4, 1)
donc dans ton message tu dis que la cellule qui a pour .value 15 est à zéro

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 !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 13h02   #10
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut Suite reponse

re,

je poste à nouveau le code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
 
Sub test()
 
Dim w As Workbook
Set w = Workbooks("TESSST.xlsm")
Dim maFeuille
Set maFeuille = w.Worksheets(1)
 
w.Activate
maFeuille.Activate
 
 '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
 
If Cells(2, 2) = Cells(4, 1) Then
MsgBox "le resultat est faux "
 
Else
MsgBox "le resultat est vrai "
 
End If
 
 
If Cells(2, 2).Value = Cells(4, 1).Value Then
MsgBox "le resultat est faux "
 
Else
MsgBox "le resultat est vrai  "
 
End If
 
End Sub
En effet j'ai ecrit cela
'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
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 15h34   #11
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 15h45   #12
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut Suite reponse

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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  If Cells(2, 2) = Cells(4, 1) Then
MsgBox "le resultat est faux "
 
Else
MsgBox "le resultat est vrai "
 
End If
 
 
If Cells(2, 2).Value = Cells(4, 1).Value Then
MsgBox "le resultat est faux "
 
Else
MsgBox "le resultat est vrai  "
Merci
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 15h45   #13
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
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 !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 15h49   #14
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut Suite reponse

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
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 16h05   #15
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
@debutVBA

vois ce lien sur les opérateurs logiques :

http://www.developpez.net/forums/d11...ect-case-or/#7

lorsque tu écrits ::

Code :
1
2
If Cells(2, 2) = Cells(4, 1) Then
MsgBox "le resultat est faux "
Vu que ta condition (selon ton énoncé / 2 valeurs égales)
Code :
If Cells(2, 2) = Cells(4, 1)
retourne Vrai, ton Then va passer logiquement à la ligne suivante où tu indiques :
Code :
MsgBox "le resultat est faux "
???

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 !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 16h07   #16
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 16h13   #17
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
@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 .

Code :
? Cells(2, 2) = Cells(4, 1)

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 !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 16h19   #18
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Citation:
Envoyé par ZebreLoup Voir le message
@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 ?
Salut, j'ai répondu entre deux, mais non je ne suis pas d'accord, ce code :

Code :
1
2
3
4
5
6
7
8
9
10
11
Sub toto()
 
If Cells(2, 2) = Cells(4, 1) Then
MsgBox "le resultat est faux "
Else
MsgBox "le resultat est vrai "
End If
 
If Cells(2, 2).Value = Cells(4, 1).Value Then
MsgBox "le resultat est faux "
Else
retourne chez moi ""le résultat est faux " fort logiquement sous 2010.

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 !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 16h38   #19
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 16h43   #20
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
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 !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h34.


 
 
 
 
Partenaires

Hébergement Web