Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Suppression de colonne en VBA

  • Initiateur de la discussion Initiateur de la discussion azurbigband
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

azurbigband

Guest
Bonjour à tous,

Je suis nouveau sur le forum et voilà mon problème :
J'ai un classeur EXCEL (2007) avec 2 feuilles.
La première feuille est un tableau de X colonnes et Y lignes, la deuxième feuille est le même tableau mais avec des colonnes supplémentaires (non existante dans la feuille 1).
Lorsque je supprime une colonne de la feuille 1 je voudrais qu'elle se supprime automatiquement sur la feuille 2 et idem pour une ligne.
Comment faire ?
Merci de vos réponses.
Bonne journée à tous.
 
Re : Suppression de colonne en VBA

Bonjour et bienvenue à toi

L'evenement sur suppression /insertion de colonne .. n'existe pas à ma connaissance !!!!
mais voici une astuce à combiner avec les particularités de ton fichier ..
-------
Source excelabo.net

Comment déclencher une macro à chaque insertion de ligne ? Cet événement n'est pas répertorié. Alors, une solution tordue : sélectionne la ligne 1000 et nomme la "fin" (insertion / nom/définir)
insère un nouvel onglet dans le classeur dans lequel tu inscris n'importe où =ligne(fin) masque cet onglet dans la page de code associée avec cet onglet, recopie :

Private sub Worksheet_Calculate()
MsgBox "aïe"
end sub

à chaque insertion (ou suppression) d'une ligne au dessus de la ligne "fin", la macro est lancée
Auteur(s) :
Ce lien n'existe plus

Bonne journée
 
Re : Suppression de colonne en VBA

Bonjour

Il faut utiliser une procédure évènementielle, ce qui implique :
- trouver une relation logique (sans ambiguïté) qui permet l'association des deux colonnes
- utiliser un évènement déclenchant la suppression, un double click par exemple
- vérifier que l'utilisateur ne commet pas d'erreur en utilisant un message d'erreur avec une double confirmation.

JP
 
Re : Suppression de colonne en VBA

Tout d'abord merci de la réponse.
Les deux feuilles ont le même nom de colonne (cellule A1 ou B1 ou C1 ...) ce qui peut être la relation logique.
Le choix de la colonne est fait sur la feuille 1 par sélection de celle-ci avant lancement de la macro.
L’événement déclenchant sera donc l'activation de la macro par un "ctrl + ...".
Merci.
 
Re : Suppression de colonne en VBA

Re..

tu peux essayer de jouer avec cette instruction dans le module de la feuille..
PS.. intercepte: ajout / supp mais plus encore...
vois si tu peux adapter ceci à ton fichier ... ...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count = Rows.Count Or Target.Columns.Count = Columns.Count Then MsgBox "Suppr / Ajout..."
End Sub

A+
 
Re : Suppression de colonne en VBA

Bonjour azurbigband, Isab


Ci joint un fichier avec des procédures évènementielles.

Dans la feuille 1 ajout d'une option dans le menu contextuel.
Cette option disparait quand on quitte la feuille. La suppression ne peut donc se faire que si on est dans la feuille de commande, ce qui n'est pas le cas avec CTRL Maj..

Une macro mémorise dans une variable publique de type string la colonne en cours.

Des messages informe l'utilisateur de la suppression des colonnes avec une demande de confirmation.

A tester

JP
 

Pièces jointes

Re : Suppression de colonne en VBA

Bonjour le forum...

Pour prolonger mon idée proposée au poste #5 voici un essai valable pour col A, B et C ( à adapter selon besoin).

Dans le module de la feuille
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'--------------------------------------------------------------
' Intecepte suppression Col A, B ou  C ds Feuil1 et suppression
' de la même colonne  dans feuil2
'--------------------------------------------------------------
Dim Nm As Name, Plage As Range, x As Integer, Col As String
Set Plage = Range("A:D")
Col = Split(Target.Address, "$")(2)
If Not Application.Intersect(Target, Plage) Is Nothing Then
  If Target.Rows.Count = Rows.Count Or _
  Target.Columns.Count = Columns.Count Then
    For Each Nm In ActiveWorkbook.Names
      If Nm.RefersTo = "=Feuil1!$" & Col & ":$" & Col Then x = x + 1
      If Nm.RefersTo = "=Feuil1!#REF!" Then Nm.Delete
    Next
    If x > 0 Then
      Sheets("Feuil2").Range(Target.Address).EntireColumn.Delete
      MsgBox " Suppression faite sur Feuil2", vbInformation
    End If
  End If
'Renommage des col A,B et C
With ActiveWorkbook.Worksheets("Feuil1")
.Names.Add Name:="ColA", RefersToR1C1:="=Feuil1!C1"
.Names.Add Name:="ColB", RefersToR1C1:="=Feuil1!C2"
.Names.Add Name:="ColC", RefersToR1C1:="=Feuil1!C3"
.Names.Add Name:="ColD", RefersToR1C1:="=Feuil1!C4"
End With
End If
End Sub


Bonne journée
 

Pièces jointes

Re : Suppression de colonne en VBA

JP, ta macro marche très bien et réagi comme je le souhaite mais comment faire un raccourci clavier pour la lancer (ctrl + ...)
D'autre part je voudrai faire une autre macro identique mais pour supprimer une ligne que dois-je modifier par rapport à la supCol ?
Merci d'avance
 
Re : Suppression de colonne en VBA

Bonjour

Ci joint le fichier avec les procédures.
Pour supprimer une colonne il faut se trouver dans la première ligne, une ligne dans le reste de la feuille.
J'ai rajouté des procédures avec CTRL MAJ C ou L.

A tester

JP
 

Pièces jointes

Re : Suppression de colonne en VBA

Merci JP cela marche très bien.
Le seul petit détail sur la suppression ligne est que dans la boîte de dialogue de suppression de la ligne ce n'est pas le numéro de la ligne qui s'affiche mais la valeur de la cellule. Comment afficher le numéro de ligne ?
D'autre part si la cellule contient du texte cela ne marche pas (alors que pour les colonnes cela marche bien).
En tout cas c'est super, merci.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
212
  • Question Question
Microsoft 365 Tableau
Réponses
5
Affichages
288
Réponses
5
Affichages
313
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…