Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
Après une formation Excel on m'a parlé de ce Forum donc voila ma première question
J'aimerais faire la synthèse de plusieurs onglet dans un onglet "synthèse" avec un tri selon la date. Pour le tri pas de souci mais je ne sais pas comment faire pour rapatrier les infos de plusieurs onglet en un 😕
Sub rapatrie()
Dim t&, c As Range
Set c = Sheets("Synthese").[A65536].End(xlUp).Offset(1, 0)
Sheets("Synthese").Range(Sheets("Synthese").[A2], c(1, 8)).ClearContents
For t = 1 To ThisWorkbook.Sheets.Count
Set c = Sheets("Synthese").[A65536].End(xlUp).Offset(1, 0)
Sheets(t).Range("A2:G" & [A65536].End(xlUp).Row).Copy Destination:=c
Next t
End Sub
kjin==> j'ai essaye de faire un TCD j'y arrive en prenant en compte mes 5 onglet mais je n'arrive pas a classer mes données comme je le voudrai je voudrai en fait avoir le meme type de tableau qu'il ya dans mes onglet mes avec les numero d'immo de tous les departement
Softmama==> le code marche mais il ne me prend pas toutes les valeurs
en effet, une erreur ds mon code, désolé, voici la macro modifiée:
Code:
Sub rapatrier()
Dim t&, c As Range
Set c = Sheets("Synthese").[A65536].End(xlUp).Offset(1, 0)
Sheets("Synthese").Range(Sheets("Synthese").[A2], c(1, 8)).ClearContents
For t = 1 To ThisWorkbook.Sheets.Count
Set c = Sheets("Synthese").[A65536].End(xlUp).Offset(1, 0)
Sheets(t).Range("A2:G" & [B][COLOR="Blue"]Sheets(t).[/COLOR][/B][A65536].End(xlUp).Row).Copy Destination:=c
Next t
End Sub
Softmama a bâti cette macro pour le rapatriement des données. Un grand MERCI.
Si quelqu’un avait le temps et la patience de m’en expliquer les diverses étapes, ce serait pour moi une grande joie.
Pour tenter de comprendre, j’ai beau solliciter la touche F1… pour « t& », « c »… et pratiquement toutes les autres étapes, je n’ai droit qu’à « mot clé introuvable » en guise d'information !..
En outre, est-il normal que la ligne de titres de la synthèse soit doublée après rapatriement ?
Tu as raison, je n'ai pas détaillé le fonctionnement de cette macro. Je vais tenter d'y remédier ici:
Code:
Dim t&, c As Range
Dim permet de déclarer des variables. On peut leur donner le nom qu'on veut. Etant assez fainéant, je choisis en général des noms courts : t et c. Dans cette déclaration de variable, je définis en outre de quel type ils sont (entiers, plages de cellules, déciamux, booléens...).
Ainsi Dim c as Range déclare la variable c comme plage.
Dim t& est un raccourci qui équivaut à taper Dim t as Integer. Mettre un signe & à la fin de la variable fait comprendre à Excel qu'elle est de type Entier. (De même, mettre un $ à la fin, force le type à String(càd Chaine de caractères))
Code:
Set c = Sheets("Synthese").[A65536].End(xlUp).Offset(1, 0)
Avec cette ligne, j'affecte à cette variable c (type plage) la cellule qui correspond à la cellule [A65536] décalée vers le haut comme si on faisait CtrlPgUp (End(xlup)) pour atterrir sur la dernière cellule non vide de la colonne A, avec un décalage d'une ligne vers le bas (.offset(1,0))
Dans la feuille Synthese, la plage qui commence en A2 et finit à l'adresse de c, décalée de 0 lignes et 7 colonnes (Range([A2],c(1,8)) est effacée (.ClearContents)
Code:
For t = 1 To ThisWorkbook.Sheets.Count
Thisworkbook est l'objet classeur actif. Sa propriété .sheets correspond aux feuilles de ce classeur. La propriété .count correspond donc au nbre de feuilles du classeur. Pour t=1 à nbre de feuilles tu vas renouveler ce qui suit. A chaque fois, t est incrémenté d'1.
Code:
Set c = Sheets("Synthese").[A65536].End(xlUp).Offset(1, 0)
La cellule c est redéfinie comme dernière cellule de la feuille Synthese.
sheets(t) correspond à la feuille n° t. Et dans cette feuille je copie la plage qui démarre en A2 et va jusqu'à Gxx où xx est la dernière ligne de la feuille et que je colle dans ma cellule c.
Code:
Next t
Et on renouvelle ça pour chaque feuille (t augmente de 1, on recommence tant que t n'a pas atteint le nbre de feuilles que contient le classeur classeur)
Il est normal que la ligne de titre soit doublée, car une erreur s'est glissée : Au lieu de mettre for t=1 to...., il fallait mettre For t=2 to... afin que ne soit pas copiée la zone de la feuille Synthèse, mais uniquement des autres feuiles
Tu as une patience d’ange pour avoir pris la peine de répondre de la sorte à ma demande de détails.
D’ici ce soir, je vais imprimer tes explications en police 100 ( ! ) et suivre les étapes décrites pour voir si je suis capable de comprendre. Et ça, c’est une autre histoire… Je ne manquerai pas de te tenir au courant, si tu n'y vois pas d'inconvénient ( ? ).
Merci encore et bon appétit à toi, ainsi qu'au forum.
Grâce à tes explications claires et détaillées, Softmama, je n’ai rien créé mais suis parvenue, en guise d’exercice, à modifier de petites choses. (supprimer / ajouter une colonne, une feuille).
Avec l’enregistreur de macro, j’ai même pu insérer un code pour modifier la taille de la police !
Le fruit de ton travail est, à présent, dans mon « coffre-fort »…
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.