Macro Tri-Select-Copy dans une autre feuille

  • Initiateur de la discussion Celeda
  • Date de début
C

Celeda

Guest
Bonjour à toutes et tous
J'ai appliqué le principe de l'Inputbox suivant après avoir fait
un tri d'un tableau : (je souhaite garder cet outil)
Sub BrowseRange()
Dim Zone As Range
Set Zone = Application.InputBox("Sélectionnez une zone !", Type:=8)
MsgBox ("Vous avez sélectionné la zone " & Zone.Address)

J'ai ajouté cette partie
Selection.Copy
Sheets("Sheet3").Select
ActiveCell.Offset(3, 0).Range("A1").Select
ActiveSheet.Paste

End Sub

Quelque chose ne fonctionne pas :
1er bug : un coup sur deux elle me copie la plage selectionnée un peu n'importe ou dans la sheet 3.
2em bug : à la fin du tri en fonction de la cellule dans laquelle se positionnera l'utilisateur, c'est cette cellule qui est recopiée en premier.

Principes :
Je veux laisser à l'utilisateur le choix de selectionner la plage qu'il veut et que celle-ci se recopie pour commencer en A2 de la sheet 3.
Pour corser le tout : si l'utilisateur a oublié une ligne ou deux, je souhaite qu'il puisse de nouveau faire fonctionner la macro (à l'aide du même bouton) et que les autres lignes viennent se placer en dessous de la selection dèjà faite (je sais pas faire).

Que dois-je modifier dans le code SVP.
Merci à l'avance.
 
T

Ti

Guest
Salut Celeda

voilà comment j'ai modifié ton exemple de code pour répondre à ton problème.
Comme tu le voulais, la première sélection est copiée en A2, ensuite les autres sélections se copient à la drenière ligne vide (j'ai d'ailleurs repris une formule donnée sur ce forum pour retrouver la première ligne vide, comme quoi rien ne se perd ici). Note que pour que cette macro fonctionne correctement, il faut que la colonne A de "Feuil3" ("sheet3" pour toi) contienne toujours une valeur.

Sub BrowseRange()
Dim Zone As Range
Dim LastLigne

Set Zone = Application.InputBox("Sélectionnez une zone !", Type:=8)
LastLigne = Worksheets("Sheet3").Range("A65534").End(xlUp).Offset(1, 0).Address
Range(Zone.Address).Copy Destination:=Worksheets("Sheet3").Range(LastLigne)
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat