• Initiateur de la discussion Initiateur de la discussion VBAnewbie
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

VBAnewbie

XLDnaute Nouveau
Bonjour, je suis assez débutant en vba, et j'essaie depuis plusieurs heure de faire un truc. Il faut que lorsque je sélectionne une cellule d'une plage (numero) celle-ci se colore en bleu et par le fait même, qu'elle se copie dans une nouvelle plage (tablier). Une fois la cellule choisie, elle ne peux pas être choisit de nouveau.

J'ai essayer des trucs avec sub Worksheet_SelectionChange(ByVal Target As Range)

Merci de bien vouloir m'aider.
 
Re : Problème Vba

Bonjour,

Essaie ceci :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 And Target.Interior.ColorIndex <> 23 And Not Intersect(Target, [numero]) Is Nothing Then 'si 1 seule cellule sélectionnée ET sa couleur pas bleue ET se trouve dans la zone numero
    Target.Copy [tablier] 'copie dans la zone Tablier
    Target.Interior.ColorIndex = 23 'colorie en bleue
End If
End Sub
 
Re : Problème Vba

Oui, j'ai bel et bien définit ces deux plages. Initialement, dans ma plage numero, j'ai des nombres qui sont tous sans couleur de fond. Je veux que lorsqu'on clique sur une de ces cellules (contenant un numéro) ce chiffre se copie dans plage tablier et que la case ou se trouve mon chiffre (dans la plage numero) soit avec un fond bleu.
 
Re : Problème Vba

Salut,
Ok, je pense mieux comprendre maintenant. Tu dois double cliquer sur la cellule pour que la macro fonctionne.

Voici ce que je te suggère :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Count = 1 And Target.Interior.ColorIndex <> 23 And Not Intersect(Target, [numero]) Is Nothing Then
    Target.Copy [tablier].Resize(1, 1).Offset(Target.Row - [numero].Resize(1, 1).Row, Target.Column - [numero].Resize(1, 1).Column)
    Target.Interior.ColorIndex = 23
End If

End Sub

Avec fichier exemple :
 

Pièces jointes

Re : Problème Vba

Bon finalement, j'ai terminé cette partie. Toutefois, j'ai un autre soucis. Je dois maintenant limiter à 4 le nombre de case qui peuvent être changer de couleur dans mon range. Autrement dit, après que 4 case soit bleu, lorsque je cliquerai sur une cellule rien ne se passera.

Merci pour votre aide.
 
Re : Problème Vba

Bonsoir vbanewbie,

Voici le code modifié qui vérifie combien il y a de cellules en bleu.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
Dim compteur As Integer

compteur = 0
For Each c In [numero]
    If c.Interior.ColorIndex = 23 Then compteur = compteur + 1
Next c
If compteur = 4 Then Exit Sub

If Target.Count = 1 And Target.Interior.ColorIndex <> 23 And Not Intersect(Target, [numero]) Is Nothing Then
    Target.Copy [tablier].Resize(1, 1).Offset(Target.Row - [numero].Resize(1, 1).Row, Target.Column - [numero].Resize(1, 1).Column)
    Target.Interior.ColorIndex = 23
End If
End Sub

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
14
Affichages
330
Retour