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 -
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) :
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
A voir également:
- Vba target.column
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
3 réponses
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
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
Bonjour,
A tester :
Après avoir nommé la cellule O1 "Reference", tu appliques le code suivant
A+
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+