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

Newson Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Newson Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   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
Newson Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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