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

4 réponses

1 2
Avatar
papou
Bonjour
C'est ce que j'ai commencé par te répondre lors de mon premier message !
De tout évidence, ta variable Chiffre est un nombre donc il ne faut pas
utiliser le LIKE qui est un opérateur de comparaison de chaîne texte...
Peut-être donc qu'il faudrait reconsidérer ma réponse d'origine ?

Cordialement
Pascal


"Sulpice" <ahouyez@(otezceci)tele2.fr> a écrit dans le message de news:


"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





Avatar
Sulpice
"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de
news:%
Bonjour
C'est ce que j'ai commencé par te répondre lors de mon premier message !
De tout évidence, ta variable Chiffre est un nombre donc il ne faut pas
utiliser le LIKE qui est un opérateur de comparaison de chaîne texte...
Peut-être donc qu'il faudrait reconsidérer ma réponse d'origine ?

Cordialement
Pascal


Bonjour,

Désolé. Je pensais que Myvalue conviendrait...
C'est bien sur des chaînes et non sur des chiffres que je cherche à filtrer,
comme s'il s'agissait de codes postaux..
J'ai tenté de modifier comme suit :

Dim Chiffre As String (j'ai aussi essayé Characters)
Chiffre = Application.InputBox("Garder le", , , , , , , 2)
For Each cellule In Selection
If cellule.Value Like "[*]&Chiffre&[*]" Then

mais là encore aucune cellule contenant Chiffre n'a été filtrée (Characters
donne une erreur : variable objet ou de bloc With non définie). J'ai aussi
mis la sélection au format texte : sans succès. Il me semble que c'est Value
qui coince, pas Chiffre. Et la fonction Like me paraît bien adaptée au tri
avec If....Then.
Cordialement,
Sulpice

Avatar
isabelle
bonjour Sulpice,

j'ai repris la ligne de commande et j'ai modifié la systaxte comme ça et cela fonctionne,

Sub Macro10()
Range("A1") = "fggf"
MyValue = "gg"
If Range("A1").Value Like "*" & MyValue & "*" Then MsgBox "ok"
End Sub

isabelle


"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de
news:%

Bonjour
C'est ce que j'ai commencé par te répondre lors de mon premier message !
De tout évidence, ta variable Chiffre est un nombre donc il ne faut pas
utiliser le LIKE qui est un opérateur de comparaison de chaîne texte...
Peut-être donc qu'il faudrait reconsidérer ma réponse d'origine ?

Cordialement
Pascal




Bonjour,
Désolé. Je pensais que Myvalue conviendrait...
C'est bien sur des chaînes et non sur des chiffres que je cherche à filtrer,
comme s'il s'agissait de codes postaux..
J'ai tenté de modifier comme suit :

Dim Chiffre As String (j'ai aussi essayé Characters)
Chiffre = Application.InputBox("Garder le", , , , , , , 2)
For Each cellule In Selection
If cellule.Value Like "[*]&Chiffre&[*]" Then

mais là encore aucune cellule contenant Chiffre n'a été filtrée (Characters
donne une erreur : variable objet ou de bloc With non définie). J'ai aussi
mis la sélection au format texte : sans succès. Il me semble que c'est Value
qui coince, pas Chiffre. Et la fonction Like me paraît bien adaptée au tri
avec If....Then.
Cordialement,
Sulpice




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

j'ai repris la ligne de commande et j'ai modifié la systaxte comme ça et
cela fonctionne,


Sub Macro10()
Range("A1") = "fggf"
MyValue = "gg"
If Range("A1").Value Like "*" & MyValue & "*" Then MsgBox "ok"
End Sub

isabelle

Bonjour Isabelle,

Et bravo ! ça marche !
Ce n'était qu'un problème de syntaxe mais bien tordu ! et il a fallu que je
mette des espaces partout :
If_ Cellule.Value_ Like_ "*"_ &_ Chiffre_ &_ "*"_ Then

(je les ai soulignés) sinon on a un message d'erreur "on attend Then ou Go
To" juste avant Then !!!
Donc Value s'applique aux valeurs numériques comme aux chaînes contrairement
à ce que je pensais.
Encore merci. Mais je crois que je ne vais pas poursuivre mon voyage en VBA.
A moins d'en faire 8h par jour pour s'habituer au jargon de l'aide et aux pb
de syntaxe....
Encore merci.
Cordialement,
Sulpice

1 2