Problème Target.Column après ajout de colonne

Newson Messages postés 2 Statut Membre -  
Newson Messages postés 2 Statut Membre -
Bonjour,
J'ai 2 soucis dans une macro. Celle-ci permet de "cocher" facilement des cases dans des colonnes et de supprimer la croix dans les autres colonnes sur la même ligne.
Cependant, mon premier soucis est que je ne peux pas inserrer de nouvelle colonne sans devoir changer toutes les valeurs "Target.Column", et il y en a un paquet.
Par exemple, pour If Target.Column = 15, si j'insers une colonne, je voudrais que ça passe à 16.
J'aimerais avoir un Target.Column = "nomdecolonne" avec le nomdecolonne = la cellule "A1" par exemple.

Mon deuxième soucis est l'apparition d'un message d'erreur d'exécution '13' si je selectionne plusieurs colonnes. J'aimerais que mon code soit plus propre que ce que j'ai fait pour éviter ce genre de chose (je n'y connais rien à la base en VBA).

Merci de votre aide

Voici mon code (réduit à 3 colonnes) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Column = 15 And Target = "" Then
Flag = True
Target = "x"
Target.Offset(0, 1).ClearContents
Target.Offset(0, 2).ClearContents
Target.Offset(0, 3).ClearContents
Target.Offset(0, 4).ClearContents
Target.Offset(0, 5).ClearContents
Flag = False

Else
If Target.Column = 15 And Target = "x" Then
Target = ""

End If
End If

If Target.Column = 16 And Target = "" Then
Flag = True
Target = "x"
Target.Offset(0, 1).ClearContents
Target.Offset(0, 2).ClearContents
Target.Offset(0, 3).ClearContents
Target.Offset(0, 4).ClearContents
Target.Offset(0, -1).ClearContents
Flag = False

Else
If Target.Column = 16 And Target = "x" Then
Target = ""

End If
End If

If Target.Column = 17 And Target = "" Then
Flag = True
Target = "x"
Target.Offset(0, 1).ClearContents
Target.Offset(0, 2).ClearContents
Target.Offset(0, 3).ClearContents
Target.Offset(0, -2).ClearContents
Target.Offset(0, -1).ClearContents
Flag = False

Else
If Target.Column = 17 And Target = "x" Then
Target = ""

End If
End If

[...]

End Sub

3 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Est ce que cette colonne "15" est repérable/identifiable (en tête, dernière colonne de la feuille, une cellule particulière, etc ...)

    Cdlmnt
    0
  2. Gyrus Messages postés 3360 Statut Membre 526
     
    Bonjour,

    A tester :
    Après avoir nommé la cellule O1 "Reference", tu appliques le code suivant
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Columns.Count > 1 Or Selection.Rows.Count > 1 Then Exit Sub
    If Not Application.Intersect(Target, Range("Reference").Resize(, 3).EntireColumn) Is Nothing Then
    If Target = "" Then
    Cells(Target.Row, Range("Reference").Column).Resize(, 6).ClearContents
    Target = "x"
    Else
    Target = ""
    End If
    End If
    End Sub

    A+
    0
  3. Newson Messages postés 2 Statut Membre
     
    Merci Gyrus, ça va pas mal m'avancer !

    @ccm81 : oui, la ligne 10 est repérable (les cases à cocher commencent à la ligne 11).

    Avec les infos de Gyrus, je pense pouvoir facilement m'en tirer
    0