VBA à la frappe

11 réponses
Avatar
Manu
Bonsoir,

J'ai dans une plage de A3:J11 une plage de nombre

Je souhaiterais que si en L1 je tape un des nombres qui se situe dans la
plage, qu'il se colore directement, je sais qu'une simple MFC le fait, mais
je souhaite pouvoir cumuler, c'est à dire que si dans L1 je tape 2 que dans
la plage le 2 se colorie puis si ensuite je tape 8 dans L1 que le 8 se
colorie également dans la plage et ainsi de suite.
L'idéal serait que dés que je valide mon nombre en L1 que la couleur se
mette automatiquement dans la plage (je ne sais pas si c'est possible qu'une
macro se lance après validation d'une cellule)

Merci

manu


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus

10 réponses

1 2
Avatar
isabelle
bonjour Manu,
voici une macro événementielle à copier sur la pagr code de la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"), LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
End If
End Sub
isabelle
Le 2017-01-13 à 13:53, Manu a écrit :
Bonsoir,
J'ai dans une plage de A3:J11 une plage de nombre
Je souhaiterais que si en L1 je tape un des nombres qui se situe dans la plage,
qu'il se colore directement, je sais qu'une simple MFC le fait, mais je souhaite
pouvoir cumuler, c'est à dire que si dans L1 je tape 2 que dans la plage le 2 se
colorie puis si ensuite je tape 8 dans L1 que le 8 se colorie également dans la
plage et ainsi de suite.
L'idéal serait que dés que je valide mon nombre en L1 que la couleur se mette
automatiquement dans la plage (je ne sais pas si c'est possible qu'une macro se
lance après validation d'une cellule)
Merci
manu
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel
antivirus Avast.
https://www.avast.com/antivirus
Avatar
Manu
Wahouuuu ! Ce qui m'épate toujours c'est que des choses qui nous parait
improbables trouvent toujours une solution et le méga épatant c'est à la
vitesse que vous puissiez résolver ce problème qui nous parait imaginatif !
Merci Isa !!!
Et si j'osais....., je sais, j'abuse ! Si c'est trop lourd, laissez tomber
car cette solution d'Isabelle me convient parfaitement ! Mais est-ce
possible qu'à la place d'une couleur un rond jaune viennent couvrir le
nombre en question.
Encore Merci Isabelle, un soucis de résolu qu'en 5 lignes, EPATANT !!!!
Manu
"isabelle" a écrit dans le message de groupe de discussion :
o5bblp$13i8$
bonjour Manu,
voici une macro événementielle à copier sur la pagr code de la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"),
LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
End If
End Sub
isabelle
Le 2017-01-13 à 13:53, Manu a écrit :
Bonsoir,
J'ai dans une plage de A3:J11 une plage de nombre
Je souhaiterais que si en L1 je tape un des nombres qui se situe dans la
plage,
qu'il se colore directement, je sais qu'une simple MFC le fait, mais je
souhaite
pouvoir cumuler, c'est à dire que si dans L1 je tape 2 que dans la plage
le 2 se
colorie puis si ensuite je tape 8 dans L1 que le 8 se colorie également
dans la
plage et ainsi de suite.
L'idéal serait que dés que je valide mon nombre en L1 que la couleur se
mette
automatiquement dans la plage (je ne sais pas si c'est possible qu'une
macro se
lance après validation d'une cellule)
Merci
manu
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel
antivirus Avast.
https://www.avast.com/antivirus

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
Manu
Je tente de comprendre ton code Isabelle :
If Target.Address = "$L$1" Then
Si je tape en L1
On Error Resume Next
Je ne comprend pas (j'imagine que si je fais une erreur alors je vais voir
la ligne du dessous Next)
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"),
LookAt:=xlWhole).Address
n doit être une variable de la plage, qu'il se fit à ce que je tape en L1 et
que je reparte à partir de A3 pour.... (et là poufffff, je ne comprend pas
plus le LookAt:=xlWhole).Address, j'imagine qu'il cherche dans ma variable
n)
If Err.Number = 0 Then Range(n).Interior.Color = 65535
Alors là ! Imcompréhensible ! Hormis la couleur jaune pourquoi cela : If
Err.Number = 0
Enfin bref ! Cà m'épate, mais j'aimerais bien comprendre ces lignes,
vraiment pas facile ! Vous avez combien d'année d'expérience, je m'adresse
évidemment aux ténors (Isabelle, jacquouille, Lsteph, MichD,
Jièl.....Etc....)
Et que devient l'ultra ténor Laurent L. ?
Avec bcp de respect
Manu
"Manu" a écrit dans le message de groupe de discussion :
o5bco7$15i8$
Wahouuuu ! Ce qui m'épate toujours c'est que des choses qui nous parait
improbables trouvent toujours une solution et le méga épatant c'est à la
vitesse que vous puissiez résolver ce problème qui nous parait imaginatif !
Merci Isa !!!
Et si j'osais....., je sais, j'abuse ! Si c'est trop lourd, laissez tomber
car cette solution d'Isabelle me convient parfaitement ! Mais est-ce
possible qu'à la place d'une couleur un rond jaune viennent couvrir le
nombre en question.
Encore Merci Isabelle, un soucis de résolu qu'en 5 lignes, EPATANT !!!!
Manu
"isabelle" a écrit dans le message de groupe de discussion :
o5bblp$13i8$
bonjour Manu,
voici une macro événementielle à copier sur la pagr code de la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"),
LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
End If
End Sub
isabelle
Le 2017-01-13 à 13:53, Manu a écrit :
Bonsoir,
J'ai dans une plage de A3:J11 une plage de nombre
Je souhaiterais que si en L1 je tape un des nombres qui se situe dans la
plage,
qu'il se colore directement, je sais qu'une simple MFC le fait, mais je
souhaite
pouvoir cumuler, c'est à dire que si dans L1 je tape 2 que dans la plage
le 2 se
colorie puis si ensuite je tape 8 dans L1 que le 8 se colorie également
dans la
plage et ainsi de suite.
L'idéal serait que dés que je valide mon nombre en L1 que la couleur se
mette
automatiquement dans la plage (je ne sais pas si c'est possible qu'une
macro se
lance après validation d'une cellule)
Merci
manu
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel
antivirus Avast.
https://www.avast.com/antivirus

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
https://www.avast.com/antivirus
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
isabelle
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
si tu modifie une autre cellule que la L1 il ne se passera rien, on passe à End If
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"), LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
si la recherche de la valeur L1 "Find(What:=[L1]" dans la plage "A3:J11"
est infructueuse alors il y a une erreur 91
donc s'il a erreur: Err.Number <> 0
à l'inverse si Err.Number = 0 signifie que la valeur a été trouvée
isabelle
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"), LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
End If
End Sub
Avatar
Manu
merci, et c'est quoi une erreur 91 ?
"isabelle" a écrit dans le message de groupe de discussion :
o5bfpb$1au1$
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
si tu modifie une autre cellule que la L1 il ne se passera rien, on passe à
End If
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"),
LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
si la recherche de la valeur L1 "Find(What:=[L1]" dans la plage "A3:J11"
est infructueuse alors il y a une erreur 91
donc s'il a erreur: Err.Number <> 0
à l'inverse si Err.Number = 0 signifie que la valeur a été trouvée
isabelle
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"),
LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
End If
End Sub
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
isabelle
erreur 91: objet non définie
la méthode Range.Find renvoie Nothing si aucune correspondance n'est trouvée
isabelle
Le 2017-01-13 à 16:15, Manu a écrit :
merci, et c'est quoi une erreur 91 ?
"isabelle" a écrit dans le message de groupe de discussion :
o5bfpb$1au1$
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
si tu modifie une autre cellule que la L1 il ne se passera rien, on passe à End If
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"), LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
si la recherche de la valeur L1 "Find(What:=[L1]" dans la plage "A3:J11"
est infructueuse alors il y a une erreur 91
donc s'il a erreur: Err.Number <> 0
à l'inverse si Err.Number = 0 signifie que la valeur a été trouvée
isabelle
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"), LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
End If
End Sub
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel
antivirus Avast.
https://www.avast.com/antivirus
Avatar
Manu
Ok, je suppose qu'il y a d'autres codes erreurs...
Trop sympa ! Merci Isabelle.
Manu
"isabelle" a écrit dans le message de groupe de discussion :
o5bgkp$1cbe$
erreur 91: objet non définie
la méthode Range.Find renvoie Nothing si aucune correspondance n'est trouvée
isabelle
Le 2017-01-13 à 16:15, Manu a écrit :
merci, et c'est quoi une erreur 91 ?
"isabelle" a écrit dans le message de groupe de discussion :
o5bfpb$1au1$
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
si tu modifie une autre cellule que la L1 il ne se passera rien, on passe
à End If
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"),
LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
si la recherche de la valeur L1 "Find(What:=[L1]" dans la plage "A3:J11"
est infructueuse alors il y a une erreur 91
donc s'il a erreur: Err.Number <> 0
à l'inverse si Err.Number = 0 signifie que la valeur a été trouvée
isabelle
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"),
LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
End If
End Sub
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel
antivirus Avast.
https://www.avast.com/antivirus

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
Manu
Mais le mot "objet" .... me dérange, Je ne le comprend pas, que veut dire ce
mot ?
"isabelle" a écrit dans le message de groupe de discussion :
o5bgkp$1cbe$
erreur 91: objet non définie
la méthode Range.Find renvoie Nothing si aucune correspondance n'est trouvée
isabelle
Le 2017-01-13 à 16:15, Manu a écrit :
merci, et c'est quoi une erreur 91 ?
"isabelle" a écrit dans le message de groupe de discussion :
o5bfpb$1au1$
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
si tu modifie une autre cellule que la L1 il ne se passera rien, on passe
à End If
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"),
LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
si la recherche de la valeur L1 "Find(What:=[L1]" dans la plage "A3:J11"
est infructueuse alors il y a une erreur 91
donc s'il a erreur: Err.Number <> 0
à l'inverse si Err.Number = 0 signifie que la valeur a été trouvée
isabelle
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$1" Then
On Error Resume Next
n = Range("A3:J11").Find(What:=[L1], After:=Range("A3"),
LookAt:=xlWhole).Address
If Err.Number = 0 Then Range(n).Interior.Color = 65535
End If
End Sub
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel
antivirus Avast.
https://www.avast.com/antivirus

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
isabelle
oui, fait une recherche dans l'aide VBA avec les mot "Erreurs récupérables"
Le 2017-01-13 à 16:29, Manu a écrit :
Ok, je suppose qu'il y a d'autres codes erreurs...
Avatar
isabelle
Range.Find, méthode
Cette méthode recherche des informations spécifiques dans une plage.
Valeur renvoyée
Objet Range qui représente la première cellule où ces informations sont trouvées.
Range, objet
Cette collection représente une cellule, une ligne, une colonne ou une sélection
de cellules contenant un ou plusieurs blocs contigus de cellules ou une plage 3D.
isabelle
Le 2017-01-13 à 16:32, Manu a écrit :
Mais le mot "objet" .... me dérange, Je ne le comprend pas, que veut dire ce mot ?
"isabelle" a écrit dans le message de groupe de discussion :
o5bgkp$1cbe$
erreur 91: objet non définie
la méthode Range.Find renvoie Nothing si aucune correspondance n'est trouvée
isabelle
1 2