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
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 _
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
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:
ekAvcdJ3GHA.4108@TK2MSFTNGP04.phx.gbl...
"isabelle" <iii@iii> a écrit dans le message de
news:O8DFsPE3GHA.476@TK2MSFTNGP06.phx.gbl...
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 _
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
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 _
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
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
"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de
news:%230RbZAK3GHA.4560@TK2MSFTNGP05.phx.gbl...
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
"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
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
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:%230RbZAK3GHA.4560@TK2MSFTNGP05.phx.gbl...
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
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
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
"isabelle" <iii@iii> a écrit dans le message de
news:OX4u9$L3GHA.1292@TK2MSFTNGP03.phx.gbl...
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
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