Mise en couleur de cellule
Bonjour,
Je voudrais savoir comment on fait pour: quand je click sur un bouton ou une cellule colorée elle se recopie automatiquement dans toute les autre cellules que je vais selectionner ( oui vous allez me dire que je click sur le petit pinceau de remise en forme)
c'est bien ca je veux que l'action ce fasse sans que j'ai a cliqué sur ce fichu pinceau pour des question de practicité.
De plus j'ai trois couleur ( forcément ) vert orange rouge ( enfaite 4) et Noir.
Cordialement.
Bonjour et
Je voudrais savoir comment on fait pour: quand je click sur un bouton ou une cellule colorée elle se recopie automatiquement dans toute les autre cellules que je vais selectionner ( oui vous allez me dire que je click sur le petit pinceau de remise en forme)
Tu ne peux pas, sauf en développant en VBA
c'est bien ca je veux que l'action ce fasse sans que j'ai a cliqué sur ce fichu pinceau pour des question de practicité.
Justement, la praticité est là avec le pinceau
Je te remercie de t'on intervenstion.
Justement
C'est bien ce que je recherche !
Développer ca en VBA.
Cordialement
Bonjour naubin,
Je te propose ce fichier Excel :
À l'ouverture du fichier, la cellule B2 est sélectionnée ; elle a un fond vert clair.
Alt F8 ➯ fenêtre Macro ; dans la liste, il y a 3 macros :
La 1ère macro sélectionnée est CopyColor ; exécute-la ➯ fenêtre ci-dessous :
Ça te montre le n° de la couleur vert clair (de type entier long) : 13 434 828
C'est un n° qui peut éventuellement te servir, mais prend cette fenêtre surtout comme une confirmation que la couleur de fond de la cellule a bien été prise en compte (enregistrée) pour pouvoir ensuite être appliquée à la sélection que tu choisiras (la cellule active ; ou plusieurs cellules, contigües ou non).
Sors de la fenêtre (clic sur bouton OK ou touche Echap), puis sélectionne par exemple : D4:D7 ; puis, avec la touche Ctrl enfoncée, sélectionne F6:F9 ; Alt F8 ; exécute la 3ème macro PasteColor ➯ couleur de fond collée sur toutes les cellules sélectionnées
Tu peux répéter cette 2ème opération aussi souvent que tu veux : VBA se lassera pas, lollll !
Et si tu veux enlever la couleur de fond de la sélection (une seule cellule, ou plusieurs) ? c'est très simple : il te suffit de sélectionner les bonnes cellules et d'utiliser la 2ème macro NoColor ; attention : ça ne met pas la couleur blanc, mais ça enlève réellement la couleur de fond : code -4142 = xlNone = Aucune couleur.
Alt F11 pour voir le code VBA, puis pour revenir sur Excel
Si besoin, tu peux demander une adaptation.
Merci de me dire si ça te convient.
dhany
Salut Naubin1, dhany
Beaucoup plus simple, mais bon tu auras...
Bonjour Bruno,
Oui, ta solution aussi est pas mal du tout !
Je précise que s'il est besoin d'indiquer plusieurs plages de cellules, il suffit de taper le caractère point-virgule pour les séparer (ou utiliser la touche Ctrl et la maintenir enfoncée lors de la sélection) ; exemple sur une reproduction de ta fenêtre Entrée :
NB : les plages de cellules peuvent être sélectionnées avec la souris : inutile de les taper au clavier
dhany
Attention, Bruno ! j'me suis rendu compte que ta version comporte un bug : quand la fenêtre "Entrée" est affichée, si tu changes d'avis et que tu appuies sur la touche Échap pour sortir, ça génère une erreur 13 incompatibilité de type ; dans un 1er temps, j'ai essayé de résoudre ce problème simplement en supprimant As Range de RngD ➯ Variant implicite ; j'sais pas pourquoi, l'erreur 13 persiste ! donc j'ai remis As Range et dans un 2ème temps, j'ai ajouté : On Error Goto Err13 avec un label Err13: bien sûr !
J'ai pas mis avant de Exit Sub car j'ai mis aucune instruction entre le label Err13: et le End Sub (donc aucune instruction de gestionnaire d'erreur à éviter, ceci dans le cas où aucune erreur ne se produit)
Voici donc la nouvelle version du fichier Excel de BrunoM45 :
Pour info, l'erreur 13 se produisait sur cette ligne de code (dont la syntaxe est tout à fait correcte) :
Set RngD = Application.InputBox(Prompt:="Veuillez sélectionner la/les cellules de destination", Type:=8, Default:="")J'aurais préféré résoudre l'erreur sans utiliser On Error Goto mais j'ai pas trouvé ; t'as p't'être une solution plus simple ?
dhany
Salut dhany
Effectivement, perso je préfère utiliser
On Error Resume NextTu ne peux pas éviter cette erreur, puisque le Inputbox avec Type:=8 définit une plage
Donc on peut modifier le code comme suit également
Sub CopieCouleur()
Dim IntCol As Long, RngD As Range
' Vérifier la sélection
If Selection.Count > 1 Then
MsgBox "Merci de sélectionner UNE cellule contenant la couleur à copier", vbCritical, "OUPS ..."
Exit Sub
End If
' Récupérer la Couleur de la cellule
IntCol = ActiveCell.Interior.Color
' Vérification
If IntCol = 16777215 Then
MsgBox "Merci de sélectionner une cellule avec une couleur", vbExclamation, "OUPS ..."
Exit Sub
End If
' En cas d'erreur
On Error Resume Next
' Demander de choisir les cellules de destinations
Set RngD = Application.InputBox(Prompt:="Veuillez sélectionner la/les cellules de destination", Type:=8, Default:="")
' Si aucune erreur Appliquer la couleur
If Err.Number = 0 Then RngD.Interior.Color = IntCol
On Error GoTo 0
End SubVoici le fichier corrigé, merci le beta testeur
BrunoM45 a écrit :merci le beta testeur
ah bon ! alors j'ai droit tout d'suite au rang violet de Contributeur !
dhany
@BrunoM45
L'argent n'a pas d'odeur, mais on s'y croirait !!!
Même virtuellement, ça fait toujours plaisir de s'sentir riche ! l'argent fait pas le bonheur mais il y contribue, hein ?
(j'crois qu'j'vais aller faire un p'tit raid à la pâtisserie, et acheter plein d'bons gâteaux !!!
dhany
Salut les boys merci de vos intervention je test ca TDS et je vous dit quoi
cordialement
niquel ! je mets le complément sur cet avance virtuel ! merci les boys
Bonjour naubin,
Merci pour le retour ... et pour le complément d'avance virtuelle !
dhany
