Boucle copier coller avec décalage

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

Didou59

XLDnaute Nouveau
Bonjour à toutes et à tous,
Nouveau sur ce forum, fort intéressant, je commence à essayer de comprendre le VBA. J'ai aujourdh'ui besoin de votre aide pour réaliser un copier coller en boucle avec un décalage automatique d'une ligne. Je m'explique : dans le fichier joint, j'ai une feuille "titularisation" qui sera remplie par des communes. Je veux qu'à partir de cette feuille des valeurs soient copiée sur la feuille "edition". Jusque là pas trop de problème. Ces valeurs vont se copier à partir (par exemple) de la cellule A60. Le souci c'est qu'il y aura encore des éléments sur la feuille édition qui devront se décaler vers le bas au fur et à mesure. Vous trouverz un premier code écris qui copie colle avec une boucle. Je ne suis pas certains de ce code. Pouvez vous m'aider. Mon objectif n'est bien évidemment pas d'obtenir du clé en main mais bien au contraire d'essayer de comprendre puis d'utiliser le vba.
D'avance merci pour vos réponses. N'arrivant pas à joindre mon fichier (trop gros et apparemment je ne peux pas ajouter de fihcier zippé avec 7zip), je vous ai copié la macro ci-dessous :
Sub Copier()
For i = 1 To 250
Sheets("Titularisation").Select
Range("K16:K2000").Copy
Sheets("Edition").Select
Range("A60").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
Sheets("Titularisation").Select
Range("M16:M2000").Copy
Sheets("Edition").Select
Range("B60").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
Sheets("Titularisation").Select
Range("L16:L2000").Copy
Sheets("Edition").Select
Range("C60").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
Sheets("Titularisation").Select
Range("AE16:AG2000").Copy
Sheets("Edition").Select
Range("D60").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
ActiveCell.Offset(0, 1).Select
Next i
End Sub
 
Re : Boucle copier coller avec décalage

Bonjour Didou59 et bienvenue! 🙂

Pour ce qui est de ton fichier, nous n'avons pas besoin du fichier complet: seules les feuilles "Titularisation" et "Edition" nous seront utiles. Par ailleurs, une cinquantaine de lignes devraient suffire, pour illustrer le principe (attention d'en supprimer les infos confidentielles!)

Si tu souhaites insérer du code dans un message, ce sera bien plus lisible si (en mode avancé) tu utilises les balises
Code:
 (icône [B]#[/B] dans la petite barre d'outils)

Dans le code que tu as fourni, je ne comprends pas bien l'utilité de la boucle [I]For[/I] qui refait ... 250 fois la même manipulation!?
 
Re : Boucle copier coller avec décalage

Bonjour Modeste,
Merci pour cette réactivité. En ce qui concerne la boucle : je veux copier les valeurs des colonnes K, M, L, AE, AF et AG ligne par ligne de façon automatique autant de fois qu'il y a d'enregistrements dans la feuille "titularisation".
Je t'ai mis le feuilles concernées en pièce jointe. Merci pour le conseil pour l'insertion d'un code, j'y prendrai garde la prochaine fois.
Merci encore
 

Pièces jointes

Re : Boucle copier coller avec décalage

Modeste,
Tant que j'y suis. J'aimerais, après avoir copié, trier dans la feuille "edition" les données selon la colonne A puis B puis C, ensuite faire le sous total de tout ce qui est identique dans la colonne C, le sous total de ce qui identique dans la colonne B et idem pous la colonne A en affichant sur une ligne ces sous totaux. J'en demande peut-être beaucoup, mais si j'avais au moins un début de procédure cela me serait fort utile.
Encore merci pour ton aide. (Je cherche de mon coté afin d'améliorer ma requête)
 
Re : Boucle copier coller avec décalage

Re-bonjour,

je terminais cette première version (voir pièce jointe) au moment de lire ton ajout ... on y reviendra donc par la suite 😛
Une chose m'inquiète, c'est la mention "Il y aura du txte ou autre ici" sous la zone où la copie devrait se faire 😕 Pour le moment j'ai fait comme si je n'avais rien lu et la macro efface les données jusqu'en ligne 5000 (les données collées "écraseraient" le texte en question, de toute façon) ... Il faut donc que tu précises ce qu'il en est.

Jette déjà un oeil pour vérifier que je ne me suis pas trompé!
 

Pièces jointes

Re : Boucle copier coller avec décalage

Modeste,
Ce que tu me proposes correspond à ce que je veux. Je vais m'atteler à comprendre l'intégralité du code. Pour le texte en dessous : avant de copier, la feuille "edition" sera préparée avec du texte ou des tableaux (peu importe) il faudrait que lorsque l'on copie une ou plusieurs lignes issues de la feuille "titularisation" cela décale automatiquement les lignes vers le bas dans la feuille "edition". J'espére avoir été clair !
 
Re : Boucle copier coller avec décalage

Bonsoir,

J'attendais un premier retour, avant de continuer ... mais toi tu attends peut-être la suite 😕
Si c'est le cas, en voici une avec insertion de lignes avant copie et tri sur les 3 clés ... si j'ai bien compris!?
Resteraient les "sous-totaux" ... pour lesquels l'une ou l'autre explication complémentaire sera la bienvenue.
 

Pièces jointes

Re : Boucle copier coller avec décalage

Modeste,
Je suis à la maison est n'ai pas excel. Je te remercie pour tes réponses. Je regarde demain au boulot et te tiens informé. J'ai jeté un oeil sur ta première macro. J'en comprend le principe mais ne sais pas encore l'expliquer en langage VBA, je continue à chercher la compréhension. Merci encore pour ton aide précieuse qui me fera gagner beucoup de temps pour le travail et plus particulièrement face à mes interlocuteurs (communes, syndicats, communautés de communes etc.)
 
Re : Boucle copier coller avec décalage

Bonjour Modeste,
Merci pour ta dernière macro qui correspond exactement à ce que j'attendais. En ce qui concerne le comptage, je te joins une image (à agrandir) pour comprendre à quel résultat il me serait agréable d'arriver. Sans titre.jpg
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    86.8 KB · Affichages: 153
  • Sans titre.jpg
    Sans titre.jpg
    86.8 KB · Affichages: 139
Re : Boucle copier coller avec décalage

Modeste,
Peux t'on inverser les colonnes "grade" et "catégorie" dans la feuille "edition", j'ai tenté de modifier en faisant un copiage individuel mais pas de résultat concluant. Est_il possible de récupérer la valeur et la mise en forme des cellules que l'on copie ? Je sais que j'en demande beaucoup mais en essayant moi-même cela bug. J'ai réussi à copier à un autre endroit que ce que prévoit la macro d'origine, ce qui n'était pas compliqué à mon sens.
Je continue d'essayer de comprendre et d'améliorer ta macro mais j'avoue que je galére un peu.
Dans tous les cas je tiens à te remercier énormément pour l'aide que tu m'apportes.
 
Re : Boucle copier coller avec décalage

Bonjour,

L'inversion des colonnes Grade et Catégorie, je l'avais repérée sur ton image et j'ai réglé le souci. Les sous-totaux devraient être ok aussi, mais au moment de déposer une nouvelle version, je lis ton dernier message et l'histoire des formats ... j'y regarde dans le courant de l'après-midi ...
 
Re : Boucle copier coller avec décalage

Modeste,
J'ai trouvé pour conserver le format de mes cellules copiées en y ajoutant le code suivant :
Code:
Sheets("Edition").Range("A" & 52 + lig).PasteSpecial Paste:=xlPasteFormats
.
Je continue à essayer d'améliorer. Merci encore.
 
Re : Boucle copier coller avec décalage

Re,

Voilà la version actualisée du fichier ... qui devrait tenir compte des différents aspects de la demande.
J'ai ajouté quelques commentaires dans le code qui te serviront de rames dans ta galère 🙄
Je me suis permis de modifier quelques données en feuille "Titularisation", pour vérifier si le tri semblait fonctionner. Je me suis aussi permis de remettre au format Standard certaines colonnes (Filière, Grade, Catégorie, ...)

Regarde à ton aise, fais des tests avec tes propres données ... et reviens nous dire 🙂
 

Pièces jointes

Re : Boucle copier coller avec décalage

Modeste,
Y a t'il une possibilité de supprimer les lignes crééees dans la feuille "edition" dès lors que l'on remette à zéro la copie. En effet, dès que je relance la macro, il efface bien les données mais conserve les lignes qui y ont été ajoutées. Pour ton info, la macro sera lancée par un bouton appelé "créer le rapport" mais je voudrais que si on clique une autre faois dessus tout revienne à zéron (données et lignes créées). Je cherche de mon coté.
 
Re : Boucle copier coller avec décalage

Re²,

Le problème, c'est le fameux "texte qui pourrait figurer sous les données" déjà évoqué 🙄 et qui serait inséré avant que les données soient collées.
Est-tu en mesure de garantir que la colonne A de la feuille "Edition" (une fois les données collées) ne contiendra jamais de cellules vides (sauf à être sous les données collées, précisément)?
Si c'est le cas, un "range("A9").end(xldown).row" devrait permettre de repérer la dernière ligne du tableau ...
 
- 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

Réponses
10
Affichages
547
Réponses
18
Affichages
316
Réponses
2
Affichages
283
Réponses
17
Affichages
1 K
Retour