OVH Cloud OVH Cloud

variables

7 réponses
Avatar
Jacquouille
Bonjour
Suite à un ancien fil de Patrick.Lampin, j'ai pondu cette macro.
Lorsque je déclare la var Zaza en Integer, la macro ne tourne que si je
recherche un nombre.
Si je la déclare en variant, elle tourne pour un mot.
Je croyais que Variant devait fonctionner aussi pour un nombre.
AV-vous une idée, svp
Merci
-----------------
Sub wanted2()
Dim zaza As Integer 'Variant
zaza = "" ' pour une remise à zéro de la var, mais ça na change rien
zn = Range("a1:f10")
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
MsgBox (zaza) ' me donne la bonne valeur recherchée
For Each c In Range("zn")
c.Interior.ColorIndex = xlNone 'efface une précédente recherche
If c.Value = zaza Then
c.Select
c.Interior.ColorIndex = 3
End If
Next
End Sub

--
Jacquouille conseille : http://www.excelabo.net

NoSpam_j.thiernesse@skynet.be

7 réponses

Avatar
Jacquouille
Précisions
En fait, je cherche la dénomination exacte de la variable pour pouvoir
chercher tant du nombre que du mot.
Ensuite, où et comment puis-je placer après le IF ... un Then msgbox ("Pas
trouvé")
s'il s'avère que la valeur de zaza n'est pas dans la plage
Un grand merci
--
Jacquouille conseille : http://www.excelabo.net


"Jacquouille" a écrit dans le message news:

Bonjour
Suite à un ancien fil de Patrick.Lampin, j'ai pondu cette macro.
Lorsque je déclare la var Zaza en Integer, la macro ne tourne que si je
recherche un nombre.
Si je la déclare en variant, elle tourne pour un mot.
Je croyais que Variant devait fonctionner aussi pour un nombre.
AV-vous une idée, svp
Merci
-----------------
Sub wanted2()
Dim zaza As Integer 'Variant
zaza = "" ' pour une remise à zéro de la var, mais ça na change rien
zn = Range("a1:f10")
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
MsgBox (zaza) ' me donne la bonne valeur recherchée
For Each c In Range("zn")
c.Interior.ColorIndex = xlNone 'efface une précédente recherche
If c.Value = zaza Then
c.Select
c.Interior.ColorIndex = 3
End If
Next
End Sub

--
Jacquouille conseille : http://www.excelabo.net






Avatar
Michel Pierron
Bonjour Jacquouille;
InputBox retourne un String; il te faut tester s'il s'agit d'un numérique !
Sub wanted2()
Dim zaza As Variant
zn = Range("a1:f10")
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
MsgBox (zaza) ' me donne la bonne valeur recherchée
If IsNumeric(zaza) Then zaza = zaza * 1
For Each c In Range("a1:f10")
c.Interior.ColorIndex = xlNone 'efface une précédente recherche If
c.Value = zaza Then
c.Select
c.Interior.ColorIndex = 3
Exit Sub
End If
Next
MsgBox "Valeur: " & zaza & " non trouvée !", 64
End Sub

MP

"Jacquouille" a écrit dans le message de
news:
Bonjour
Suite à un ancien fil de Patrick.Lampin, j'ai pondu cette macro.
Lorsque je déclare la var Zaza en Integer, la macro ne tourne que si je
recherche un nombre.
Si je la déclare en variant, elle tourne pour un mot.
Je croyais que Variant devait fonctionner aussi pour un nombre.
AV-vous une idée, svp
Merci
-----------------
Sub wanted2()
Dim zaza As Integer 'Variant
zaza = "" ' pour une remise à zéro de la var, mais ça na change rien
zn = Range("a1:f10")
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
MsgBox (zaza) ' me donne la bonne valeur recherchée
For Each c In Range("zn")
c.Interior.ColorIndex = xlNone 'efface une précédente recherche
If c.Value = zaza Then
c.Select
c.Interior.ColorIndex = 3
End If
Next
End Sub

--
Jacquouille conseille : http://www.excelabo.net






Avatar
Didier Bicking
Une autre solution consiste, avant d'entrer dans la boucle for, à
initialiser une variable à false :
xTrouveúlse

Cette avriable sera modifiée chaque fois que la valeur recherchée a été
trouvée. Une fois suffit en réalité, mais ça ne changera pas le résultat si
c'est plusieurs fois.

For Each...
If c.value=zaza then
...
xTrouve=True
End If
...
Next

Après la boucle, tester :

If xTrouve then
MsgBox zaza & " a été trouvé"
Else
MsgBox zaza " n'a pas été trouvé"
Endif

Bon courage !

--
Didier Bicking
Développeur

http://dbicking.chez.tiscali.fr
"Michel Pierron" a écrit dans le message de
news:
Bonjour Jacquouille;
InputBox retourne un String; il te faut tester s'il s'agit d'un numérique
!

Sub wanted2()
Dim zaza As Variant
zn = Range("a1:f10")
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
MsgBox (zaza) ' me donne la bonne valeur recherchée
If IsNumeric(zaza) Then zaza = zaza * 1
For Each c In Range("a1:f10")
c.Interior.ColorIndex = xlNone 'efface une précédente recherche If
c.Value = zaza Then
c.Select
c.Interior.ColorIndex = 3
Exit Sub
End If
Next
MsgBox "Valeur: " & zaza & " non trouvée !", 64
End Sub

MP

"Jacquouille" a écrit dans le message de
news:
Bonjour
Suite à un ancien fil de Patrick.Lampin, j'ai pondu cette macro.
Lorsque je déclare la var Zaza en Integer, la macro ne tourne que si je
recherche un nombre.
Si je la déclare en variant, elle tourne pour un mot.
Je croyais que Variant devait fonctionner aussi pour un nombre.
AV-vous une idée, svp
Merci
-----------------
Sub wanted2()
Dim zaza As Integer 'Variant
zaza = "" ' pour une remise à zéro de la var, mais ça na change rien
zn = Range("a1:f10")
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
MsgBox (zaza) ' me donne la bonne valeur recherchée
For Each c In Range("zn")
c.Interior.ColorIndex = xlNone 'efface une précédente recherche
If c.Value = zaza Then
c.Select
c.Interior.ColorIndex = 3
End If
Next
End Sub

--
Jacquouille conseille : http://www.excelabo.net










Avatar
Jacquouille
Salut Michel
très astucieux, ce pied au cul pour sortir de la sub quand le boulot est
fait.
Moi qui cherchais à tout prix à mettre un "else"
Encore merci
--
Jacquouille conseille : http://www.excelabo.net


"Michel Pierron" a écrit dans le message news:

Bonjour Jacquouille;
InputBox retourne un String; il te faut tester s'il s'agit d'un numérique
!

Sub wanted2()
Dim zaza As Variant
zn = Range("a1:f10")
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
MsgBox (zaza) ' me donne la bonne valeur recherchée
If IsNumeric(zaza) Then zaza = zaza * 1
For Each c In Range("a1:f10")
c.Interior.ColorIndex = xlNone 'efface une précédente recherche If
c.Value = zaza Then
c.Select
c.Interior.ColorIndex = 3
Exit Sub
End If
Next
MsgBox "Valeur: " & zaza & " non trouvée !", 64
End Sub

MP

"Jacquouille" a écrit dans le message de
news:
Bonjour
Suite à un ancien fil de Patrick.Lampin, j'ai pondu cette macro.
Lorsque je déclare la var Zaza en Integer, la macro ne tourne que si je
recherche un nombre.
Si je la déclare en variant, elle tourne pour un mot.
Je croyais que Variant devait fonctionner aussi pour un nombre.
AV-vous une idée, svp
Merci
-----------------
Sub wanted2()
Dim zaza As Integer 'Variant
zaza = "" ' pour une remise à zéro de la var, mais ça na change rien
zn = Range("a1:f10")
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
MsgBox (zaza) ' me donne la bonne valeur recherchée
For Each c In Range("zn")
c.Interior.ColorIndex = xlNone 'efface une précédente recherche
If c.Value = zaza Then
c.Select
c.Interior.ColorIndex = 3
End If
Next
End Sub

--
Jacquouille conseille : http://www.excelabo.net










Avatar
Jacquouille
Bonsoir Didier
Cette approche du problème est un peu plus complexe pour moi. Elle mérite
que je lui consacre du temps, mais du temps de bureau -)))
je testerai donc demain au boulot
merci pour ta réponse

--
Jacquouille conseille : http://www.excelabo.net


"Didier Bicking" a écrit dans le message news:
bvj07p$d9v$
Une autre solution consiste, avant d'entrer dans la boucle for, à
initialiser une variable à false :
xTrouveúlse

Cette avriable sera modifiée chaque fois que la valeur recherchée a été
trouvée. Une fois suffit en réalité, mais ça ne changera pas le résultat
si

c'est plusieurs fois.

For Each...
If c.value=zaza then
...
xTrouve=True
End If
...
Next

Après la boucle, tester :

If xTrouve then
MsgBox zaza & " a été trouvé"
Else
MsgBox zaza " n'a pas été trouvé"
Endif

Bon courage !

--
Didier Bicking
Développeur

http://dbicking.chez.tiscali.fr
"Michel Pierron" a écrit dans le message de
news:
Bonjour Jacquouille;
InputBox retourne un String; il te faut tester s'il s'agit d'un
numérique


!
Sub wanted2()
Dim zaza As Variant
zn = Range("a1:f10")
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
MsgBox (zaza) ' me donne la bonne valeur recherchée
If IsNumeric(zaza) Then zaza = zaza * 1
For Each c In Range("a1:f10")
c.Interior.ColorIndex = xlNone 'efface une précédente recherche
If


c.Value = zaza Then
c.Select
c.Interior.ColorIndex = 3
Exit Sub
End If
Next
MsgBox "Valeur: " & zaza & " non trouvée !", 64
End Sub

MP

"Jacquouille" a écrit dans le message de
news:
Bonjour
Suite à un ancien fil de Patrick.Lampin, j'ai pondu cette macro.
Lorsque je déclare la var Zaza en Integer, la macro ne tourne que si
je



recherche un nombre.
Si je la déclare en variant, elle tourne pour un mot.
Je croyais que Variant devait fonctionner aussi pour un nombre.
AV-vous une idée, svp
Merci
-----------------
Sub wanted2()
Dim zaza As Integer 'Variant
zaza = "" ' pour une remise à zéro de la var, mais ça na change rien
zn = Range("a1:f10")
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
MsgBox (zaza) ' me donne la bonne valeur recherchée
For Each c In Range("zn")
c.Interior.ColorIndex = xlNone 'efface une précédente recherche
If c.Value = zaza Then
c.Select
c.Interior.ColorIndex = 3
End If
Next
End Sub

--
Jacquouille conseille : http://www.excelabo.net














Avatar
Frédéric Sigonneau
Bonsoir Jacques,

Une solution possible est de tout traiter avec le type String (il faut alors
chercher sur c.Text au lieu de c.Value) :

Sub wanted2()
Dim zaza$, zn$, msg$
Dim c As Range
zn = Range("a1:f10").Address
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
For Each c In Range(zn)
c.Interior.ColorIndex = xlNone 'efface une précédente recherche
If c.Text = zaza Then
c.Select
c.Interior.ColorIndex = 3
End If
Next
End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour
Suite à un ancien fil de Patrick.Lampin, j'ai pondu cette macro.
Lorsque je déclare la var Zaza en Integer, la macro ne tourne que si je
recherche un nombre.
Si je la déclare en variant, elle tourne pour un mot.
Je croyais que Variant devait fonctionner aussi pour un nombre.
AV-vous une idée, svp
Merci
-----------------
Sub wanted2()
Dim zaza As Integer 'Variant
zaza = "" ' pour une remise à zéro de la var, mais ça na change rien
zn = Range("a1:f10")
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
MsgBox (zaza) ' me donne la bonne valeur recherchée
For Each c In Range("zn")
c.Interior.ColorIndex = xlNone 'efface une précédente recherche
If c.Value = zaza Then
c.Select
c.Interior.ColorIndex = 3
End If
Next
End Sub

--
Jacquouille conseille : http://www.excelabo.net




Avatar
Jacquouille
Merci Fred
Si je te comprends bien, le string, c'est le dollar. Normal,ça rétrécit
tout le temps. -))))
Grand merci à toi aussi
--
Jacquouille conseille : http://www.excelabo.net


"Frédéric Sigonneau" a écrit dans le message
news:
Bonsoir Jacques,

Une solution possible est de tout traiter avec le type String (il faut
alors

chercher sur c.Text au lieu de c.Value) :

Sub wanted2()
Dim zaza$, zn$, msg$
Dim c As Range
zn = Range("a1:f10").Address
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
For Each c In Range(zn)
c.Interior.ColorIndex = xlNone 'efface une précédente recherche
If c.Text = zaza Then
c.Select
c.Interior.ColorIndex = 3
End If
Next
End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour
Suite à un ancien fil de Patrick.Lampin, j'ai pondu cette macro.
Lorsque je déclare la var Zaza en Integer, la macro ne tourne que si je
recherche un nombre.
Si je la déclare en variant, elle tourne pour un mot.
Je croyais que Variant devait fonctionner aussi pour un nombre.
AV-vous une idée, svp
Merci
-----------------
Sub wanted2()
Dim zaza As Integer 'Variant
zaza = "" ' pour une remise à zéro de la var, mais ça na change rien
zn = Range("a1:f10")
msg = "Entrez le mot ou la valeur à rechercher"
zaza = InputBox(msg)
MsgBox (zaza) ' me donne la bonne valeur recherchée
For Each c In Range("zn")
c.Interior.ColorIndex = xlNone 'efface une précédente recherche
If c.Value = zaza Then
c.Select
c.Interior.ColorIndex = 3
End If
Next
End Sub

--
Jacquouille conseille : http://www.excelabo.net