Sélection d'une zone avec la souris dans cette macro

Gedch

XLDnaute Occasionnel
Bonjours à tous
Cette macro fonctionne
Mais je dois rentrer manuellement les zones dans les 2 imputbox
Je voudrais le faire avec la souris
J'ai bien pensé à utiliser cette instruction
Set s = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
Mais je maitrise malheureusement pas assez le VBA

Voici la macro :
Sub Recopie_Cellule()

Dim s As String, d As String
SendKeys "% ~{DOWN 4}{right 4}~"
s = InputBox("Source à copier...")
If s = "" Then s = Selection.Address
SendKeys "% ~{DOWN 4}{right 4}~"
d = InputBox("Destination de la copie...")
If d = "" Then d = Selection.Address
Range(s).Copy Destination:=Range(d)
End Sub

Si quelqu'un peut m'aider
Merci
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

Pourquoi se compliquer la vie?
Si tu sélectionnes une plage avec la souris, il suffit de faire Clic-droit-> Copier puis de sélectionner la cellule de destination Clic-droit-> Coller

Sinon histoire de perdre son temps ;)
VB:
Sub SiVraimentMacroIlFautAlorsMacroVoila()
Dim p, q, a$, b$
Set p = Application.InputBox("Sélectionnez la plage à copier!", "Sélection de cellules", Type:=8)
Set q = Application.InputBox("Sélectionnez la plage de recopie !", "Sélection de cellules", Type:=8)
a = p.Address
b = q.Address
Range(a).Copy Range(b).Cells(1, 1)
End Sub
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour Gedch,

Une piste:
VB:
Sub Recopier()
Dim source As Range, Destination As Range

   On Error Resume Next
   Set source = Application.InputBox("sélectionner la zone à copier :", Type:=8)
   If source Is Nothing Then Exit Sub
   Set Destination = Application.InputBox("sélectionner la zone vers où copier :", Type:=8)
   If Destination Is Nothing Then Exit Sub
   On Error GoTo 0
   source.Copy Destination
End Sub

nota : J'avions point rafraichi. Bonjour Staple1600 ;)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,
Mais point d'accord avec mon questionnement du message#2, tu es?
J'acquiesce, j'approuve, je souscris, j'adhère.

NB: Avec ton code, je vois un cas où un problème pourrait poindre lors de la recopie
Vois-tu lequel, camarade ? ;)
Je donne ma langue au chat :confused:

Des problèmes, il pourra toujours s'en produire. Ne serait-ce que si l'utilisateur saisit des plages source et destination incompatibles entre elles.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Si je sélectionne la plage de cellule suivantes A1:C3 pour la recopier dans la plage D1:Z50, alors poindra le problème

Si tu fais la même chose avec ma macro, alors le problème ne poindra pas ;)
(et ce que l’utilisateur soit en possession de ses moyens ou pas ;))
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @Staple1600,

Je donne mon chat à ma langue

Le code ne copie que vers la même feuille. On pourrait tenter le code suivant :
Code:
Sub SiVraimentMacroIlFautAlorsMacroVoila()
Dim p As Range, q As Range, a$, b$
   On Error Resume Next
   Set p = Application.InputBox("Sélectionnez la plage à copier!", "Sélection de cellules", Type:=8)
   Set q = Application.InputBox("Sélectionnez la plage de recopie !", "Sélection de cellules", Type:=8)
   If Not p Is Nothing And Not q Is Nothing Then p.Copy q(1, 1)
End Sub
 

Gedch

XLDnaute Occasionnel
Bonjour Stapple1600, Bonjour Mapomme
Tout d'abord merci à tous les deux

Stapple, je présentais cette remarque, puisqu' elle est évidement d'une pure logique
Je m'explique donc, cette macro va me servir pour faciliter la saisie pour des personnes qui ne connaissent pas forcément Excel,
Deuxièmement cette macro ne s’arrête pas là et j'avais besoin de ce bout de code pour continuer.

J'étais tout près de la solution, ma macro état quasiment semblable
Mais j'avais omis de mettre ".Address" après "a = p" !!!
Peux tu me m'expliquer le pourquoi de ce ".Address" ?

Mapomme, Ta solution, quand on la regarde, semble la simplicité même
Et pourtant je suis passé à côté !!
Je vois que j'ai beaucoup à apprendre !

En tout cas vos deux macro fonctionnent très bien
Stapple, je n'ai pas le besoin de faire des copies de A1:C3 vers la plage D1:Z50
Par contre si j’essaie de copier D12:E12 Vers H12:I12, cela ne va pas
Avec la macro de Mapomme c'est bon.

Encore merci à vous deux

A Plus
 

Discussions similaires

Statistiques des forums

Discussions
312 510
Messages
2 089 150
Membres
104 052
dernier inscrit
mattghju