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

Fermé
Newson Messages postés 2 Date d'inscription lundi 12 mai 2014 Statut Membre Dernière intervention 12 mai 2014 - Modifié par Newson le 12/05/2014 à 14:51
Newson Messages postés 2 Date d'inscription lundi 12 mai 2014 Statut Membre Dernière intervention 12 mai 2014 - 12 mai 2014 à 18:57
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 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 430
12 mai 2014 à 15:13
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 samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 525
12 mai 2014 à 15:38
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 lundi 12 mai 2014 Statut Membre Dernière intervention 12 mai 2014
12 mai 2014 à 18:57
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