Copier plages de cellules en VBA et les coller sur la même feuille
#1
Débutant XLPages

Inscription: 05/01/2011

Messages: 3

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 05-01-2011 12h47
Bonjour à tous,
novice et nouvellement inscrit sur ce forum, je tente une demande auprès de vous, pour m'aider à résoudre un problème en VBA, car mes recherches sont restées vaines.

J'ai un classeur composé de plusieurs feuilles ("synthèse", "extrait 1", "extrait 2", "extrait 3" etc ...)
Mon souci est que j'aurais souhaité pouvoir copier une plage de cellules (E10:E100, identique sur chaque feuille "extrait 1", "extrait 2", etc ...) puis de coller ces plages sur la feuille synthèse en g10:g100 puis h10:h100, puis i10:i100, etc ...
Mon principal problème est que le nombre de feuilles nommées "extrait 1", "extrait 2", etc ... est variable. Je pense qu'il va me falloir utiliser une boucle, mais je ne maîtrise pas cette notion.

Quelqu'un pourrait-il m'aider dans cette démarche ?

Merci par avance

FENIX
Pièce jointe:
xls Copie plages VBA.xls   [ Taille: 63.50 Ko - Téléchargements: 1100 ]
Hors Ligne
Rapport   Haut 

Re: Copier plages de cellules en VBA et les coller sur la même feuille
#2
Débutant XLPages

Inscription: 01/06/2007
De Liège Belgique

Messages: 12

Système d'exploitation:
PC & Mac
Version Excel utilisée:
2016, MAC 2011
Posté le : 05-01-2011 18h09
Bonsoir,

Voici un code à placer dans un module et lui associer éventuellement un bouton.


Sub test()
'Macro Dan pour Fenix le 05/01/2010
Dim cel As Range
apllication.ScreenUpdating = False
For Each cel In Range("G9:K9")
    With Worksheets(CStr(cel))
            .Select
            .Range("E10:E" & Range("E" & Rows.Count).End(xlUp).Row).Copy _
                Worksheets("synthèse").Cells(cel.Row + 1, cel.Column)
    End With
Next
Worksheets("synthèse").Select
End Sub
Amicalement

Edit dan : Afin que le code fonctionne, veille à ce que les mots "extrait 1", etc dans ta feuille synthèse (cellule G9 à K9) soit exempt des guillemets.



@+ Dan
Hors Ligne
Rapport   Haut 

Re: Copier plages de cellules en VBA et les coller sur la même feuille
#3
Débutant XLPages

Inscription: 05/01/2011

Messages: 3

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 05-01-2011 21h12
Merci beaucoup Dan pour cette réponse,

je viens de tester ton code qui fonctionne, avec effectivement pour impératif d'avoir "extrait 1" etc .. indiqué en g9 à k9 sans les guillemets.
Cependant j'ai presque honte de n'avoir pas su me faire comprendre et je suis désolé pour le temps que tu as bien voulu me consacrer alors que je m'étais mal exprimé, et je m'en excuse.

Ce que je souhaitais, était de rapatrier les données des feuilles "extrait 1" etc ... et de les coller sur la feuille "synthèse" sans tenir compte qu'il soit écrit "extrait 1" etc ...  sur la feuille "synthèse" (j'avais indiqué cela juste pour info) et surtout que ce code fasse de même si une feuille "extrait 6" ou "extrait 7" etc ... existe dans le classeur (car je ne sais pas à l'avance combien de feuilles "extrait X" j'aurai à analyser)



Encore merci

FENIX
Hors Ligne
Rapport   Haut 

Re: Copier plages de cellules en VBA et les coller sur la même feuille
#4
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 06-01-2011 00h54
Bonsoir FENIX, Dan, le Forum.

Tout d'abord, je vous souhaite à tous les deux une bonne année et FENIX, je te souhaite également la bienvenue sur XLpages.com

Tu trouveras en pièce jointe une nouvelle proposition qui pourrait répondre à tes nouvelles explications.

Le traitement tient compte de l'ensemble des onglets présents, quelque soit leur nom (à l'exception de la synthèse bien sûr).

J'ai utilisé le simple code suivant, dans le module de code standard Module1 :

Option Explicit

' myDearFriend!  -  www.mdf-xlpages.com
Sub Traitement()
Dim F As Worksheet
Dim C As Integer
    With Sheets("synthèse")
        .Range("G10:IV100").ClearContents
        C = 6
        For Each F In Worksheets
            If Not F.Name = "synthèse" Then
                C = C + 1
                .Columns(C).Rows("10:100").Value = F.Range("E10:E100").Value
            End If
        Next F
    End With
End Sub

Cordialement,
Pièce jointe:
zip PourFenix.zip   [ Taille: 25.66 Ko - Téléchargements: 1244 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Copier plages de cellules en VBA et les coller sur la même feuille
#5
Débutant XLPages

Inscription: 05/01/2011

Messages: 3

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 06-01-2011 08h31
Bonjour Mdf, Dan et le forum,

Un grand merci à tous les deux, pour m'avoir consacré de votre temps et une mention toute particulière pour Mdf, dont le code proposé correspond exactement à ce que je souhaitais.
Dan ne déméritant pas car mes explications initiales n'étaient pas forcément des plus claires ... ceci me servira de leçon pour les posts futurs.

Encore un merci à tous les deux et @ bientôt

FENIX
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes