Excel remplir une cellule en 1 clic avec VBA
Résolu/Fermé
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
-
6 mars 2008 à 16:07
Grobibi34 Messages postés 83 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 29 mai 2008 - 7 mars 2008 à 09:20
Grobibi34 Messages postés 83 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 29 mai 2008 - 7 mars 2008 à 09:20
A voir également:
- Excel remplir une cellule en 1 clic avec VBA
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Liste déroulante excel - Guide
- Verrouiller cellule excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
7 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
6 mars 2008 à 20:25
6 mars 2008 à 20:25
Bonjour,
Sinon tu peux utiliser l'evenement BeforeDoubleClick.
D'une part ça évite d'avoir à sélectionner une autre cellule pour revenir et déclencher l'evenement selection_change, d'autre part ça évite de changer la couleur par inadvertance.
Et je pense que ce n'est pas la couleur blanche que tu veux detecter mais l'absence de couleur qui est -4142 ou la variable xlColorIndexNone .
De plus pour éviter que ton changement de couleur se fasse sur toutes les cellules il faut sortir du programme après avoir testé si ta cellule (Target) souble-cliquée est en dehors de la zone que tu as défini.
Et si tu veux éviter de passer la cellule en mode édiition suite au double clic il faut ajouter cancel = true
Exemple avec action uniquement sur la colonne B :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
If ActiveCell.Interior.ColorIndex = xlColorIndexNone Then ActiveCell.Interior.ColorIndex = 3 Else ActiveCell.Interior.ColorIndex = xlColorIndexNone
Cancel = True
End Sub
eric
Sinon tu peux utiliser l'evenement BeforeDoubleClick.
D'une part ça évite d'avoir à sélectionner une autre cellule pour revenir et déclencher l'evenement selection_change, d'autre part ça évite de changer la couleur par inadvertance.
Et je pense que ce n'est pas la couleur blanche que tu veux detecter mais l'absence de couleur qui est -4142 ou la variable xlColorIndexNone .
De plus pour éviter que ton changement de couleur se fasse sur toutes les cellules il faut sortir du programme après avoir testé si ta cellule (Target) souble-cliquée est en dehors de la zone que tu as défini.
Et si tu veux éviter de passer la cellule en mode édiition suite au double clic il faut ajouter cancel = true
Exemple avec action uniquement sur la colonne B :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
If ActiveCell.Interior.ColorIndex = xlColorIndexNone Then ActiveCell.Interior.ColorIndex = 3 Else ActiveCell.Interior.ColorIndex = xlColorIndexNone
Cancel = True
End Sub
eric
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
7 mars 2008 à 09:20
7 mars 2008 à 09:20
Bonjour Bonjour, tout d'abord merci à tous pour vous etre penché sur la question.
J'ai réussi à faire fonctionner ton code Amigo, j'ai pu repérer mon erreur qui était plutot bète.
Eric ton code est super aussi et je le trouve super interessant je pense que avec ces éléments je ne peux plus me planter sur ce sujet.
Tom il est pas mal ton lien je vais le lire à fond je pense.
En bref un grand merci à tous pour m'aider à avancer dans ma macro :-)
Cordialement
Grobibi34
J'ai réussi à faire fonctionner ton code Amigo, j'ai pu repérer mon erreur qui était plutot bète.
Eric ton code est super aussi et je le trouve super interessant je pense que avec ces éléments je ne peux plus me planter sur ce sujet.
Tom il est pas mal ton lien je vais le lire à fond je pense.
En bref un grand merci à tous pour m'aider à avancer dans ma macro :-)
Cordialement
Grobibi34
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
6 mars 2008 à 16:32
6 mars 2008 à 16:32
Quelle persévérance, Grobibi !
Là, le problème est que tu demandes la couleur 3 dans les deux cas !!
L'instruction ci-dessous devrait suffire :
If ActiveCell.Interior.ColorIndex = 3 Then ActiveCell.Interior.ColorIndex = 0
Là, le problème est que tu demandes la couleur 3 dans les deux cas !!
L'instruction ci-dessous devrait suffire :
If ActiveCell.Interior.ColorIndex = 3 Then ActiveCell.Interior.ColorIndex = 0
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
6 mars 2008 à 16:51
6 mars 2008 à 16:51
Hum non gros problème sa ne marche pas.
Si jamais j'écris:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveCell.Interior.ColorIndex = 3
If ActiveCell.Interior.ColorIndex = 3 Then ActiveCell.Interior.ColorIndex = 0
End Sub
Là la cellule passe en rouge mais repasse instantanément en blanc.
Tu pense qu'il faudrait appliqué une tempo entre les deux ?
Ou alors j'ai tout faux ?
Si jamais j'écris:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveCell.Interior.ColorIndex = 3
If ActiveCell.Interior.ColorIndex = 3 Then ActiveCell.Interior.ColorIndex = 0
End Sub
Là la cellule passe en rouge mais repasse instantanément en blanc.
Tu pense qu'il faudrait appliqué une tempo entre les deux ?
Ou alors j'ai tout faux ?
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
6 mars 2008 à 17:34
6 mars 2008 à 17:34
J'aurai aussi une nouvelle question sur le même sujet.
Penses tu que cette fonction ne sois aplicable que sur certaines cellules, par exemple sur un cadre qui irait de la cellule B5 à la cellule B22 en longueur et j'usqu'a la cellule AA5.
Je sais pas trop si je me suis fais comprendre là..... oO
Cordialement
Grobibi34
Penses tu que cette fonction ne sois aplicable que sur certaines cellules, par exemple sur un cadre qui irait de la cellule B5 à la cellule B22 en longueur et j'usqu'a la cellule AA5.
Je sais pas trop si je me suis fais comprendre là..... oO
Cordialement
Grobibi34
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
6 mars 2008 à 17:43
6 mars 2008 à 17:43
Re Grobibi34,
y'a un pti souci dans ton code :
If ActiveCell.Interior.ColorIndex = 0 Then ActiveCell.Interior.ColorIndex = 3 Else ActiveCell.Interior.ColorIndex = 3
en français ça fait : si la cellule est de couleur 0 alors mets là en couleur 3, sinon mets là en couleur 3 !!!!!
Donc :
If ActiveCell.Interior.ColorIndex = 0 Then ActiveCell.Interior.ColorIndex = 3 Else ActiveCell.Interior.ColorIndex = 0
Tom
y'a un pti souci dans ton code :
If ActiveCell.Interior.ColorIndex = 0 Then ActiveCell.Interior.ColorIndex = 3 Else ActiveCell.Interior.ColorIndex = 3
en français ça fait : si la cellule est de couleur 0 alors mets là en couleur 3, sinon mets là en couleur 3 !!!!!
Donc :
If ActiveCell.Interior.ColorIndex = 0 Then ActiveCell.Interior.ColorIndex = 3 Else ActiveCell.Interior.ColorIndex = 0
Tom
Grobibi34
Messages postés
83
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
29 mai 2008
30
6 mars 2008 à 17:53
6 mars 2008 à 17:53
Re Tom
Je vois bien mon erreur mais ton code ne marche pas non plus sa ne colore pas les cellules.
Une autre solution?
Je vois bien mon erreur mais ton code ne marche pas non plus sa ne colore pas les cellules.
Une autre solution?
bonjour,
ce code marche chez moi, le probleme c'est qu'il faut quitter la cellule ets revenir pour faire changer la couleur
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Interior.ColorIndex <= 0 Then
ActiveCell.Interior.ColorIndex = 3
Else
ActiveCell.Interior.ColorIndex = 0
End If
End Sub
A+.
ce code marche chez moi, le probleme c'est qu'il faut quitter la cellule ets revenir pour faire changer la couleur
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Interior.ColorIndex <= 0 Then
ActiveCell.Interior.ColorIndex = 3
Else
ActiveCell.Interior.ColorIndex = 0
End If
End Sub
A+.
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
6 mars 2008 à 20:42
6 mars 2008 à 20:42
Re,
Je n'ajouterai qu'un chose : http://www.commentcamarche.net/forum/affich 5330748 colorer une cellule en 1 clic ;)
Tom
Je n'ajouterai qu'un chose : http://www.commentcamarche.net/forum/affich 5330748 colorer une cellule en 1 clic ;)
Tom