Insérer/Supprimer en VBA

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
 

2passage

XLDnaute Impliqué
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+
 

Gibson94

Nous a quitté
Repose en paix
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'.
 
M

Mauco

Guest
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
 

2passage

XLDnaute Impliqué
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
 

Discussions similaires

Statistiques des forums

Discussions
312 779
Messages
2 092 044
Membres
105 164
dernier inscrit
publd2