OVH Cloud OVH Cloud

Cellule.Value

14 réponses
Avatar
Sulpice
Bonjour à tous,
Rugueux ce VBA !
Je voudrais traduire ceci en VBA : si une cellule contient (entre autres) le
chiffre "Chiffre" défini dans une InputBox, sa valeur est "Chiffre". Sinon
la cellule doit être vide.
J'ai essayé avec des caractères génériques, mais ça ne marche pas :

If Cellule.Value = "*Chiffre*" Then
Cellule.Value = "Chiffre"
Else
Cellule.Value. Delete

Là s'arrêtent mes connaissances en VBA........
Quelqu'un peut-il m'aider ?
D'avance merci.
Sulpice

10 réponses

1 2
Avatar
isabelle
bonjour Sulpice,

il y a l'opérateur Like tu pourrais utiliser

voici un exemple extrait de l'aide Xl2002
Cet exemple utilise l'opérateur Like pour comparer une chaîne à un modèle.

Dim MyCheck
MyCheck = "aBBBa" Like "a*a" ' Renvoie True.
MyCheck = "F" Like "[A-Z]" ' Renvoie True.
MyCheck = "F" Like "[!A-Z]" ' Renvoie False.
MyCheck = "a2a" Like "a#a" ' Renvoie True.
MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Renvoie True.
MyCheck = "BAT123khg" Like "B?T*" ' Renvoie True.
MyCheck = "CAT123khg" Like "B?T*" ' Renvoie False.

isabelle


Bonjour à tous,
Rugueux ce VBA !
Je voudrais traduire ceci en VBA : si une cellule contient (entre autres) le
chiffre "Chiffre" défini dans une InputBox, sa valeur est "Chiffre". Sinon
la cellule doit être vide.
J'ai essayé avec des caractères génériques, mais ça ne marche pas :

If Cellule.Value = "*Chiffre*" Then
Cellule.Value = "Chiffre"
Else
Cellule.Value. Delete

Là s'arrêtent mes connaissances en VBA........
Quelqu'un peut-il m'aider ?
D'avance merci.
Sulpice



Avatar
papou
Bonjour
La variable Chiffre est-elle définie ?
La fonction InputBox est-elle bien utilisée ?
Pour un contrôle de données saisies dans un InputBox, il faut utiliser :
Application.InputBox(prompt as string,
title,default,left,top,helpfile,helpcontextid,type)
où le dernier argument Type prend les valeurs :
0 Une formule.
1 Un nombre.
2 Texte (une chaîne).
4 Une valeur logique (True ou False).
8 Une référence de cellule, sous la forme d'un objet Range.
16 Une valeur d'erreur, telle que #N/A.
64 Un tableau de valeurs


Exemple :
Dim lechiffre As Long
lechiffre = Application.InputBox("Nombre", "Saise ?", , , , , , 1)


Cordialement
Pascal

"Sulpice" <ahouyez@(otezceci)tele2.fr> a écrit dans le message de news:
%
Bonjour à tous,
Rugueux ce VBA !
Je voudrais traduire ceci en VBA : si une cellule contient (entre autres)
le
chiffre "Chiffre" défini dans une InputBox, sa valeur est "Chiffre". Sinon
la cellule doit être vide.
J'ai essayé avec des caractères génériques, mais ça ne marche pas :

If Cellule.Value = "*Chiffre*" Then
Cellule.Value = "Chiffre"
Else
Cellule.Value. Delete

Là s'arrêtent mes connaissances en VBA........
Quelqu'un peut-il m'aider ?
D'avance merci.
Sulpice



Avatar
Sulpice
Isabelle et Papou bonjour,
Et merci.
On y est presque.
....
Dim MyValue
MyValue = InputBox("Garder le")
For Each Cellule In Selection
If Cellule.Value = "[*]" Like "[*]MyValue[*]" Then
Cellule.Value = MyValue
Else
Cellule.Value = ""
....
mais le Like ne repère aucune cellule contenant Myvalue et toute la
sélection est vidée. Ai-je encore oublié de déclarer qqe chose ?
Sulpice

"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de
news:
Bonjour
La variable Chiffre est-elle définie ?
La fonction InputBox est-elle bien utilisée ?
Pour un contrôle de données saisies dans un InputBox, il faut utiliser :
Application.InputBox(prompt as string,
title,default,left,top,helpfile,helpcontextid,type)
où le dernier argument Type prend les valeurs :
0 Une formule.
1 Un nombre.
2 Texte (une chaîne).
4 Une valeur logique (True ou False).
8 Une référence de cellule, sous la forme d'un objet Range.
16 Une valeur d'erreur, telle que #N/A.
64 Un tableau de valeurs


Exemple :
Dim lechiffre As Long
lechiffre = Application.InputBox("Nombre", "Saise ?", , , , , , 1)


Cordialement
Pascal

"Sulpice" <ahouyez@(otezceci)tele2.fr> a écrit dans le message de news:
%
Bonjour à tous,
Rugueux ce VBA !
Je voudrais traduire ceci en VBA : si une cellule contient (entre
autres)


le
chiffre "Chiffre" défini dans une InputBox, sa valeur est "Chiffre".
Sinon


la cellule doit être vide.
J'ai essayé avec des caractères génériques, mais ça ne marche pas :

If Cellule.Value = "*Chiffre*" Then
Cellule.Value = "Chiffre"
Else
Cellule.Value. Delete

Là s'arrêtent mes connaissances en VBA........
Quelqu'un peut-il m'aider ?
D'avance merci.
Sulpice







Avatar
Céline
après essai...
je te conseille ceci


Dim MyValue
MyValue = InputBox("Garder le")
MsgBox MyValue
For Each cellule In Selection
If cellule.Value Like "*" & MyValue & "*" Then
cellule.Value = MyValue
Else
cellule.Value = ""
End If
Next cellule

If Cellule.Value = "[*]" Like "[*]MyValue[*]" Then
--> Cellule.Value = "[*]" est déjà un test en soit... :s

céline
Avatar
Sulpice
"Céline" a écrit dans le message de
news:
après essai...
je te conseille ceci


Dim MyValue
MyValue = InputBox("Garder le")
MsgBox MyValue
For Each cellule In Selection
If cellule.Value Like "*" & MyValue & "*" Then
cellule.Value = MyValue
Else
cellule.Value = ""
End If
Next cellule

If Cellule.Value = "[*]" Like "[*]MyValue[*]" Then
--> Cellule.Value = "[*]" est déjà un test en soit... :s

céline

Bonjour Céline,
Merci de ton aide mais ça résiste !
" If cellule.Value Like "*" & MyValue & "*" Then" donne un message d'erreur
de syntaxe et de compilation (on attend then ou go to après "*" et c'est ce
qui est pourtant prévu !). Une précision qui est peut-être importante : je
travaille avec Excel 2000.
Sulpice
Avatar
Sulpice
"Sulpice" <ahouyez@(otezceci)tele2.fr> a écrit dans le message de
news:%

"Céline" a écrit dans le message de
news:
après essai...
je te conseille ceci


Dim MyValue
MyValue = InputBox("Garder le")
MsgBox MyValue
For Each cellule In Selection
If cellule.Value Like "*" & MyValue & "*" Then
cellule.Value = MyValue
Else
cellule.Value = ""
End If
Next cellule

If Cellule.Value = "[*]" Like "[*]MyValue[*]" Then
--> Cellule.Value = "[*]" est déjà un test en soit... :s

céline

Bonjour Céline,
Merci de ton aide mais ça résiste !
" If cellule.Value Like "*" & MyValue & "*" Then" donne un message
d'erreur

de syntaxe et de compilation (on attend then ou go to après "*" et c'est
ce

qui est pourtant prévu !). Une précision qui est peut-être importante : je
travaille avec Excel 2000.
Sulpice


Re Céline,

Plus d'erreur de syntaxe/compilation en écrivant Like "[*]&MyValue&[*]".
Mais Like ne repère toujours pas les cellules contenant MyValue !
Sulpice

Avatar
isabelle
bonjour Sulpice,

peut être en y ajoutant un tidel (~),

Dim MyValue
MyValue = InputBox("Garder le")
MsgBox MyValue
For Each cellule In Selection
If cellule.Value Like "~*" & MyValue & "~*" Then
cellule.Value = MyValue
Else
cellule.Value = ""
End If
Next cellule

isabelle


"Céline" a écrit dans le message de
news:
après essai...
je te conseille ceci


Dim MyValue
MyValue = InputBox("Garder le")
MsgBox MyValue
For Each cellule In Selection
If cellule.Value Like "*" & MyValue & "*" Then
cellule.Value = MyValue
Else
cellule.Value = ""
End If
Next cellule

If Cellule.Value = "[*]" Like "[*]MyValue[*]" Then
--> Cellule.Value = "[*]" est déjà un test en soit... :s

céline

Bonjour Céline,
Merci de ton aide mais ça résiste !
" If cellule.Value Like "*" & MyValue & "*" Then" donne un message d'erreur
de syntaxe et de compilation (on attend then ou go to après "*" et c'est ce
qui est pourtant prévu !). Une précision qui est peut-être importante : je
travaille avec Excel 2000.
Sulpice




Avatar
Sulpice
Bonsoir Isabelle,
Désolé. Le tidel ne change rien : les cellules contenant MyValue ne sont pas
repérées.
C'est frustrant ! si je tape un chiffre dans la boite de dialogue
"Rechercher" après avoir sélectionné des cellules, cette commande va me
donner toutes les cellules de la sélection contenant ce chiffre. Pourquoi
est-ce aussi difficile d'obtenir cela avec une macro en VBA ?
A demain
Cordialement,
Sulpice

"isabelle" a écrit dans le message de
news:
bonjour Sulpice,

peut être en y ajoutant un tidel (~),

Dim MyValue
MyValue = InputBox("Garder le")
MsgBox MyValue
For Each cellule In Selection
If cellule.Value Like "~*" & MyValue & "~*" Then
cellule.Value = MyValue
Else
cellule.Value = ""
End If
Next cellule

isabelle


"Céline" a écrit dans le message de
news:
après essai...
je te conseille ceci


Dim MyValue
MyValue = InputBox("Garder le")
MsgBox MyValue
For Each cellule In Selection
If cellule.Value Like "*" & MyValue & "*" Then
cellule.Value = MyValue
Else
cellule.Value = ""
End If
Next cellule

If Cellule.Value = "[*]" Like "[*]MyValue[*]" Then
--> Cellule.Value = "[*]" est déjà un test en soit... :s

céline

Bonjour Céline,
Merci de ton aide mais ça résiste !
" If cellule.Value Like "*" & MyValue & "*" Then" donne un message
d'erreur


de syntaxe et de compilation (on attend then ou go to après "*" et c'est
ce


qui est pourtant prévu !). Une précision qui est peut-être importante :
je


travaille avec Excel 2000.
Sulpice






Avatar
isabelle

C'est frustrant ! si je tape un chiffre dans la boite de dialogue
"Rechercher" après avoir sélectionné des cellules, cette commande va me
donner toutes les cellules de la sélection contenant ce chiffre. Pourquoi
est-ce aussi difficile d'obtenir cela avec une macro en VBA ?


dans ce cas vaudrait peut être mieux utilisé la méthode "Find"

Set valeur = Range(Selection.Find(What:="Chiffre", After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:úlse).Address)
MsgBox valeur.Address

isabelle

Avatar
Sulpice
"isabelle" a écrit dans le message de
news:


C'est frustrant ! si je tape un chiffre dans la boite de dialogue
"Rechercher" après avoir sélectionné des cellules, cette commande va me
donner toutes les cellules de la sélection contenant ce chiffre.
Pourquoi


est-ce aussi difficile d'obtenir cela avec une macro en VBA ?


dans ce cas vaudrait peut être mieux utilisé la méthode "Find"

Set valeur = Range(Selection.Find(What:="Chiffre", After:¬tiveCell,
LookIn:=xlFormulas, LookAt _

:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _

False, SearchFormat:úlse).Address)
MsgBox valeur.Address

isabelle


Oups !!! Et ensuite il faudra compléter la macro pour traiter différemment
les cellules trouvées des autres cellules. Trop pointu pour moi.
Revenons à cette ligne qui ne fonctionne pas :

If cellule.Value Like "[*]&MyValue&[*]" Then

L'argument de Like fait penser à une chaîne de caractères et cellule.Value à
une valeur numérique. Serait-ce la cause du non-fonctionnement ? Est-ce que
Value est le terme correct dans ce cas ? Ou est-ce que ma question est
stupide ?
Cordialement,
Sulpice


1 2