Coche automatique - Option
Bonjour,
Je m'adresse à vous car je suis confronté à un problème concernant un fichier que je suis en train de créer.
J'ai créé un fichier excel sur lequel je souhaite cocher une option (2 sont disponibles). Si l'une d'entre elles est cochée, l'autre se décoche automatiquement.
J'ai réussi à l'adapter en dur en trouvant quelques trucs sur le net, et vu que j'ai commencé il n'y a pas longtemps, je sèche un peu pour le résultat final. Mon code "en dur" est le suivant :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Range("B2"), Target) Is Nothing And _
Intersect(Range("B10"), Target) Is Nothing Then
Exit Sub
End If
If Target.MergeCells = True Then
Else
If ActiveCell.Value = "" Then
ActiveCell.Value = "X"
Else
ActiveCell.Value = ""
End If
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range, Cel As Range
Set Plage = Intersect(Target, Range("B2", "B10"))
If Plage Is Nothing Then Exit Sub
For Each Cel In Plage
If Cel[/quote] <> "" Then
Select Case Cel.Row
Case 2
Cel.Offset(8, 0).ClearContents
Case 10
Cel.Offset(-8, 0).ClearContents
End Select
End If
Next Cel
End Sub
Ce que j'aimerais faire maintenant, c'est faire que cette macro soit plus flexible, notamment en pouvant ajouter des lignes/colonnes sans impacter la macro (ce qui est le cas actuellement).
Un collègue a eu l'idée de créer un tableau et de m'en servir.
J'ai préalablement nommé mes cellules pour plus de facilité.
Mais je bloque complètement, et je n'arrive pas à adapter mon cas à cette macro.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim TabSelect(2)
If Intersect(Range("Case1"), Target) Is Nothing And _
Intersect(Range("Case2"), Target) Is Nothing Then
Exit Sub
If Target.MergeCells = True Then
Else
TabSelect(0) = "Case1"
TabSelect(1) = "Case2"
For i = 0 To UBound(TabSelect)
If TabSelect(i) = "" Then
TabSelect(i) = "X"
Else: TabSelect(i) = ""
Case1 = TabSelect(0)
Case2 = TabSelect(1)
End If
Next
End If
End If
End Sub
La structure est différente, mais bon j'ai essayé. Je vous met le fichier Excel avec les exemples.
En feuille 1 : La macro que je souhaite faire fonctionner.
En feuille 2 : La macro en dur qui fonctionne.
Si l'un d'entre vous a une idée pour m'aider, ou peut m'indiquer si je suis sur la mauvaise voie, ça serait super !
Je vous en remercie par avance.
Bonjour,
Je suggère une autre approche.
Toute case à basculer se nommera selon le format "CaseX.Y", X étant son identifiant, et Y un chiffre entre 1 et 2 (puisqu'elles sont liées deux à deux)
Ensuite ce code à tester dans la feuille TAB :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
T = Left(Target.Name.Name, 4)
If T = "Case" Then
NomCase = Right(Target.Name.Name, Len(Target.Name.Name) - 4)
NumCase = InStr(1, NomCase, ".")
If Range("Case" & Left(NomCase, NumCase - 1) & ".1").Cells.Value = "X" Then
Range("Case" & Left(NomCase, NumCase - 1) & ".1").Cells.Value = ""
Range("Case" & Left(NomCase, NumCase - 1) & ".2").Cells.Value = "X"
Else
Range("Case" & Left(NomCase, NumCase - 1) & ".1").Cells.Value = "X"
Range("Case" & Left(NomCase, NumCase - 1) & ".2").Cells.Value = ""
End If
End If
Cancel = True
End Sub
Comme ceci ou cela :
Ou cela (mieux) :
Bonjour Oxydum,
Merci pour votre réponse, ça fonctionne super bien !
C'est exactement ce que je recherchais (au niveau de la flexibilité).
J'ai utilisé mon cas avec 2 cellules, et cette macro fonctionne par paires seulement non ?
Dans le cas de choix multiples (3, 4 cases) je ne serais pas bridé ?
Non, le cas de choix multiples n'est pas prévu.
Admettons 4 cases...
La première est cochée, il faudrait basculer les 3 autres, ou les inverser, c'est ça ?
Voilà c'est ça.
Si je coche la première case, les 3 autres doivent être vides.
C'est pour ça que j'étais parti sur un tableau (dim) pour pouvoir gérer des cases multiples.
J'ai donné l'exemple avec 2 cellules mais ce n'était pas représentatif de mon besoin final, désolé.
Voici donc un classeur qui devrait prendre en compte tous ces cas.
Je poste une dernière réponse à mon sujet, un collègue m'a montré un solution avec la solution tableau sur laquelle j'étais parti.
J'ajoute le fichier si ça peut servir à d'autres personnes qui lisent ce sujet
On peut ajouter une boucle pour rendre le tout 100% flexible avec le tableau.
Encore merci pour votre aide, j'ai tout ce qu'il me faut maintenant