Insérer/Supprimer en VBA

  • Initiateur de la discussion Initiateur de la discussion Mauco
  • 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 !

M

Mauco

Guest
Bonjour à tous,

Je vous soumets les lignes ci-dessous :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim x As Integer, y As Integer, Zone As Range, Cell As Range, Zone2 As Range, Cell2 As Range
On Error Resume Next
Set Zone = Range('Zone')
Set Zone2 = Range('Zone2')
If Application.Intersect(Target, Zone2) Is Nothing Then Exit Sub
y = Target.Range('A2').Column
For Each Cell2 In Zone2
Range(Cells(1, y), Cells(41, y)).Select
Selection.Delete Shift:=xlToLeft
Cells(7, y).Select
Exit Sub
Next Cell2
If Application.Intersect(Target, Zone) Is Nothing Then Exit Sub
x = Target.Range('A1').Column
For Each Cell In Zone
Range(Cells(5, x), Cells(41, x)).Select
Selection.Copy
Cells(5, x).Select
Selection.Insert Shift:=xlToRight
Cells(7, x).Select
Exit Sub
Next Cell
End Sub

En principe, en cliquant à droite selon Zone ou Zone 2, ça doit insérer ou supprimer la colonne où l'on clique.
En fait, en décomposant le programme en 2 (insérer ou supprimer) ça marche super. Le problème c'est quand j'essaye de les réunir sous la même Private Sub.

Si vous avez des idées, je suis preneur...

J'ai également essayé de faire fonctionner le programme avec une touche de raccourci ou un bouton, mais je pense avoir un problème avec les variables (x ou y). Le problème doit venir de l'adresse de la cellule active qui renvoi le numéro de colonne à insérer ou à supprimer.

Merci à tous ceux qui prendront le temps de lire ce post.

A +

Mauco
 
Bonjour,

ton probleme c est quoi exactement ? ca supprime mais ca n'insère pas ? c est ça ? juste en lisant le code c'est pas évident.. peut etre que je me trompe mais :
- si pas intersect zone 2 exit sub, ça empêcherait pas l insertion si intersect zone ?

sinon, je veux bien 2 ou 3 explication sur le problème
:whistle:

A+
 
Bonjour Mauco, 2passage, le forum,

Je pencherai pour la réponse de 2passage, car si ta 1ère condition est fausse, tu sors de la sub, alors teste avec un 'then goto suite' à la place de 'then exit sub'. Puis mettre 'suite:' après 'Next Cell2'.
 
Ok 2 passage et Gibson94, ça fonctionne avec un then goto évedemment ... !

Mon post comprenait une 2ème partie : je n'arrive pas à faire tourner le prg avec un bouton ou une touche de raccourci.
...

Merci beaucoup à vous 2

MAuco
 
Bonjour,

mmm.. je pense que 'target' pose un probleme si tu copie colle le bouton. En effet, Target est un range qui se définit au moment du right click. Je vois 2 solutions :

-1 : tu colles le code sur un bouton en remplaçant Target par une selection de range adéquate (activewindows.rangeselection ou activecell par exemple). Attention à la cohérence du reste du code.

- 2 : tu colles ton code dans une sub avec un argument target que tu fournit au click sur le bouton genre :

sub Ton_Code(target as range)
bla..bla..
end sub

sub bouton_click
Ton_Code(activecell)
end sub
 
- 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
5
Affichages
839
Réponses
1
Affichages
305
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
538
Réponses
2
Affichages
496
Retour