[Resolu en Partie] Copie et coller les valeur avec SET (sans boucle)

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

laurent950

XLDnaute Barbatruc
Bonjour le Forum,

J'aimerais savoir si il y a la possibilité de faire un recopie d'une zone de selection avec set (sans passer par une boucle)

selectionner une cellule et tous recopier (l'intégralité de la valeur SET en mémoire)

un fichier joint et aussi la macro que j'ai faite pour explication.

Sub test()

Set fm1 = Sheets("Mag1") ' Feuille magasin 1
Set fm2 = Sheets("Mag3") ' Feuille magasin 3

Set TabBalon = fm1.Range(fm1.Cells(3, 2), fm1.Cells(13, 4)) ' Zone de selection feuile balon
Set TabChaussure = fm2.Range(fm2.Cells(5, 3), fm2.Cells(22, 5)) ' Zone de selection feuile Chaussure


' Comment faire pour recopier la zone de selection d'un coup ?
Cells(1, 1) = TabBalon.Value ' Il n'y a que Balon qui se copie


' Comment faire pour recopier la zone de selection d'un coup ?
Cells(15, 1) = TabChaussure.Value ' Il n'y a que Chaussure qui se copie

End Sub

je vous remerci par avance
au plaisir de vous lire et de vous répondre

laurent
 

Pièces jointes

Dernière édition:
Re : Copie et coller les valeur avec SET (sans boucle)

Bonjour Laurent,

Une proposition :

VB:
Sub test()
Dim fm(1 To 2) As Worksheet, r(1 To 2) As Long, c(1 To 2) As Integer, Rg(1 To 2) As Range
Set fm(1) = Sheets("Mag1")
Set fm(2) = Sheets("Mag3")

r(1) = fm(1).Cells(Rows.Count, 2).End(xlUp).Row
c(1) = fm(1).Cells(3, Columns.Count).End(xlToLeft).Column
r(2) = fm(2).Cells(Rows.Count, 3).End(xlUp).Row
c(2) = fm(2).Cells(5, Columns.Count).End(xlToLeft).Column

Set Rg(1) = fm(1).Range(fm(1).Cells(3, 2), fm(1).Cells(r(1), c(1)))
Set Rg(2) = fm(2).Range(fm(2).Cells(5, 3), fm(2).Cells(r(2), c(2)))


' Comment faire pour recopier la zone de selection d'un coup ?
Rg(1).Copy Destination:=Cells(1, 1)


' Comment faire pour recopier la zone de selection d'un coup ?
Rg(2).Copy Destination:=Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1)

End Sub

Bien sur, le code pourrait être grandement simplifié (surtout si le nbr de feuilles Mag est grand) si les tableaux commençaient tous au même endroit au lieu de B3 et C5. Cordialement

KD
 
Re : Copie et coller les valeur avec SET (sans boucle)

Bonsoir KenDev,

Merci j'ai compris le principe de base, j'ai transformer la macro sous cette forme :

Sub testlaurent()

' Adresse de l'astuce pour copier via un autre classeur :
Ce lien n'existe pluswww.developpez.net/forums/d990017/l...cd=5&hl=fr&ct=clnk&gl=fr&source=www.google.fr


' Ouverture d'un classeur et mise en mémoire = autre classeur (pour compilation)
' ici un exemple de classeur
' Choisir un classeur
' Choisir une feuille du classeur

'Set xlBook = Workbooks("Adresselematou.xls") ' Exemple nom du classeur
'Set xlSheet = xlBook.Worksheets("ADRESSES") ' Nom de la feuille

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

' Classeur de destination contenant lui même des feuilles (Ici le classeur actif)
Set fm1 = Sheets("Mag1") ' Feuille magasin 1 = nom de feuille
Set fm2 = Sheets("Mag3") ' Feuille magasin 2 = nom de feuille

Set TabBalon = fm1.Range(fm1.Cells(3, 2), fm1.Cells(13, 4)) ' Zone de selection feuile balon
Set TabChaussure = fm2.Range(fm2.Cells(5, 3), fm2.Cells(22, 5)) ' Zone de selection feuile Chaussure

'' Comment faire pour recopier la zone de selection d'un coup ?
TabBalon.Copy Destination:=Cells(65536, 1).End(xlUp) ' Il n'y a que Balon qui se copie

' Comment faire pour recopier la zone de selection d'un coup ?
TabChaussure.Copy Destination:=Cells(65536, 1).End(xlUp) ' Il n'y a que Chaussure qui se copie

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

' Fichier de destination ou seront copier les informations (c'est l'autre classeur)
ici un exemple de classeur

'Set LLL = xlSheet.Range(xlSheet.Cells(1, 1), xlSheet.Cells(45, 1))

'LLL.Copy Destination:=Cells(65536, 1).End(xlUp)


End Sub

' Comment faire pour décharger les variables de la mémoire de la machines à la fin de la boucle, si une personne c'est cela ?


en Faite j'aurais besoin d'ouvrir des classeurs, copier des zones prédéfini et les coller a la suite dans un classeur ouvert (une compilation sur une feuilles de plusieurs classeur)

La question que je pourrais vous poser.

Comment paramétrer la feuille sur une autre classeur (faire la même choses mais sur un autre classeur)

j'aouvre le classeur, je selectionne et je colle (tous cela dans une boucle do while)

ps : je joint le code qui fonctionne (avec d'autre macro ou je me sert des adresses pour info cela fonctionne pas avec cette macro trop lourd mais je laisse quand même)

il y a aussi la macro de KenDev (que je remerci) et aussi a vous le forum

laurent
 

Pièces jointes

Dernière édition:
- 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

Discussions similaires

C
Réponses
5
Affichages
1 K
Cocoraphsg
C
B
  • Question Question
Microsoft 365 colorer une plage
Réponses
2
Affichages
970
bd.afaf
B
S
Réponses
3
Affichages
874
sanae_J
S
Retour