[VBA] truc incompréhensible... bug Excel2007 ???

Le
HD
Bonjour,

Je viens d'avoir quelque chose de bizarre soit c'est un bug, soit il me
faudrait reboire du café pour me réveiller

En cellule A1, tapez "nouveaux dossiers"
En cellule A2, tapez "nouveau dossier"

Si vous utilisez les lignes suivantes:
If InStr(1, ActiveCell.Value, "nouvea", vbTextCompare) And InStr(1,
ActiveCell.Value, "doss", vbTextCompare) Then
MsgBox "ok"
End If
Vous n'aurez pas "ok" qui va s'afficher lorsque vous étes en A1 alors que
logiquement vous devriez l'avoir sur A2 et aussi lorsque vous étes en A1.

Par contre avec les lignes suivantes:
If InStr(1, ActiveCell.Value, "nouvea", vbTextCompare) Then
If InStr(1, ActiveCell.Value, "doss", vbTextCompare) Then MsgBox "ok"
End If
Vous aurez bien "ok" qui va s'afficher dans les deux cas Un peu comme si
le vba Excel n'acceptait pas de lancer 2 Instr() sur une même ligne
seulement dans certains cas Avec "nouveau dossier" au singulier ça
passe mais au pluriel non ??? Et j'ai eu également des cas où ça passe
alors que "nouveaux dossiers" est au pluriel mais que ce texte se trouve
avec certains autres mots. Exemple: "Quote-part nouveaux dossiers" va bien
afficher "ok".

Alors pourquoi celà passe dans certains cas et pas dans d'autres ??? A
savoir que je suis sous Excel 2007 J'ai testé sur un autre poste avec
Excel 2003 et celà ne passe pas non plus

Merci d'avance pour votre aide
--
@+
HD
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
bcar
Le #20379621
Bonjour,
Essaye :

If InStr(1, ActiveCell.Value, "nouvea", vbTextCompare) > 0
And InStr(1, ActiveCell.Value, "doss", vbTextCompare) > 0 Then
MsgBox "ok"
End If

Ca marchera beaucoup mieux.

Instr renvoie un type long (qui indique la position de la première
occurence de la chaine cherchée) pas un bool.


HD a écrit :
Bonjour,

Je viens d'avoir quelque chose de bizarre... soit c'est un bug, soit il me
faudrait reboire du café pour me réveiller...

En cellule A1, tapez "nouveaux dossiers"
En cellule A2, tapez "nouveau dossier"

Si vous utilisez les lignes suivantes:
If InStr(1, ActiveCell.Value, "nouvea", vbTextCompare) And InStr(1,
ActiveCell.Value, "doss", vbTextCompare) Then
MsgBox "ok"
End If
Vous n'aurez pas "ok" qui va s'afficher lorsque vous étes en A1... alors que
logiquement vous devriez l'avoir sur A2 et aussi lorsque vous étes en A1.

Par contre avec les lignes suivantes:
If InStr(1, ActiveCell.Value, "nouvea", vbTextCompare) Then
If InStr(1, ActiveCell.Value, "doss", vbTextCompare) Then MsgBox "ok"
End If
Vous aurez bien "ok" qui va s'afficher dans les deux cas... Un peu comme si
le vba Excel n'acceptait pas de lancer 2 Instr() sur une même ligne
seulement dans certains cas... Avec "nouveau dossier" au singulier ça
passe... mais au pluriel non ??? Et j'ai eu également des cas où ça passe
alors que "nouveaux dossiers" est au pluriel mais que ce texte se trouve
avec certains autres mots. Exemple: "Quote-part nouveaux dossiers" va bien
afficher "ok".

Alors pourquoi celà passe dans certains cas et pas dans d'autres ??? A
savoir que je suis sous Excel 2007... J'ai testé sur un autre poste avec
Excel 2003 et celà ne passe pas non plus...

Merci d'avance pour votre aide


Publicité
Poster une réponse
Anonyme