veuillez selectionner la cellule de destination

C

christian

Guest
bonjour à tous

comment en vba construire la macro qui demande à l'utilisateur de selectionner la cellule de destination par exemple pour coller une plage

merci de votre aide
 
H

Hervé

Guest
Bonjour

Le code suivant utilise 2 application.inputbox :

1ère pour demander la plage à copier
2ème pour demander la plage de destination

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim plage1 As Range, plage2 As Range
Set plage1 = Application.InputBox("Sélectionnez la plage à copier : ", Type:=8)
Set plage2 = Application.InputBox("Sélectionnez la plage de destination : ", Type:=8)
plage1.Copy Destination:=plage2

End Sub

à toi de l'adapter.

Gateau.gif



Salut
Hervé

PS : je sens que je vais m'amuser avec ce postHit
 
H

Hervé

Guest
Bonjour

Le bug de la macro vient du fait que l’annulation renvoi un object vide.

Il faut donc utiliser un gestionnaire d’erreur

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim plage1 As Object, plage2 As Object
‘Si une erreur se produit se rendre à la balise gestionderreur
On Error GoTo gestionderreur

Set plage1 = Application.InputBox("Sélectionnez la plage à copier : ", Type:=8)
Set plage2 = Application.InputBox("Sélectionnez la plage de destination : ", Type:=8)
plage1.Copy Destination:=plage2

Exit Sub
gestionderreur:
End Sub

Salut
Hervé
 
C

christian

Guest
bonjour

j'ai testé la gestion des erreurs et c'est ok, merci encore.

J'ai un autre problème:
si la plage de destination est dans la feuiile active tout va bien mais comment faire si la plage de destination est dans une autre feuille ?
 
H

Hervé

Guest
bonjour

je comprend pas bien.

Tu selectionnes ton autre feuille ou ton autre classeur, puis ta cellule, et enfin tu valides.

l'application.inputbox est en modal, tu peut donc très simplement sélectionner un autre objet que la page active, tout ce faisant à la souris.

Salut
Hervé
 
C

christian

Guest
bonjour,

effectivement, tout va bien avec la macro telle qu'elle est présentée mais j'ai voulu l'adapter et c'est là que je rencontre des problèmes.

la plage à copier est selectionnée (pas à travers inputbox) et la plage de destination (à travers inputbox) est à insérer entre des lignes déjà remplies

j'ai joint le fichier en question pour plus de compréhension

salut
christian
 

Pièces jointes

  • cellule_destination1.zip
    11.3 KB · Affichages: 28
C

christian

Guest
bonjour

a travers la macro suivante, comment selectionner la cellule active de la plage2 après l'avoir copiée


Sub Macro3()
'On Error GoTo finerreur
Set plage1 = Application.InputBox("Sélectionnez la plage à copier : ", Type:=8)
Set plage2 = Application.InputBox("Sélectionnez la plage de destination : ", Type:=8)
plage1.Copy destination:=plage2
'GoTo Fin
'fin de la boucle on error go to
'finerreur:
' MsgBox "vous n'avez pas sélectionné la cellule de destination"
'Fin:

End Sub


merci
 
C

christian

Guest
bonjour,

tout d'abord merci pour la solution apportée mais j'ai encore 2 questions par rapport au fichier joint cellule.zip

1°si j'ai une mise en forme conditionnelle dans les cellules du type:
=index($a:$a;ligne())="x" et que j'utilise le scroll de la souris pour définir la cellule de destination. la macro plante

2°la feuille de destination n'est pas forçément la feuille3 mais peut-être n'importe quelle feuille (même un autre classeur ouvert).

salut
christian
 

Discussions similaires

Réponses
21
Affichages
984
Réponses
56
Affichages
1 K

Statistiques des forums

Discussions
312 203
Messages
2 086 183
Membres
103 152
dernier inscrit
Karibu