Boucle copier coller avec décalage

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
 

Modeste

XLDnaute Barbatruc
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!?
 

Didou59

XLDnaute Nouveau
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

  • Excel download.xls
    278.5 KB · Affichages: 88
  • Excel download.xls
    278.5 KB · Affichages: 92
  • Excel download.xls
    278.5 KB · Affichages: 100

Didou59

XLDnaute Nouveau
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)
 

Modeste

XLDnaute Barbatruc
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 :p
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 :confused: 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

  • Didou59.xls
    186 KB · Affichages: 111
  • Didou59.xls
    186 KB · Affichages: 106
  • Didou59.xls
    186 KB · Affichages: 111

Didou59

XLDnaute Nouveau
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 !
 

Modeste

XLDnaute Barbatruc
Re : Boucle copier coller avec décalage

Bonsoir,

J'attendais un premier retour, avant de continuer ... mais toi tu attends peut-être la suite :confused:
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

  • Didou59.xls
    186.5 KB · Affichages: 81
  • Didou59.xls
    186.5 KB · Affichages: 80
  • Didou59.xls
    186.5 KB · Affichages: 76

Didou59

XLDnaute Nouveau
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.)
 

Didou59

XLDnaute Nouveau
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: 149
  • Sans titre.jpg
    Sans titre.jpg
    86.8 KB · Affichages: 133

Didou59

XLDnaute Nouveau
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.
 

Modeste

XLDnaute Barbatruc
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 ...
 

Didou59

XLDnaute Nouveau
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.
 

Modeste

XLDnaute Barbatruc
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 :rolleyes:
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

  • Didou59 (v3).xls
    215.5 KB · Affichages: 101

Didou59

XLDnaute Nouveau
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é.
 

Modeste

XLDnaute Barbatruc
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é :rolleyes: 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 ...
 

Discussions similaires

Réponses
2
Affichages
128
Réponses
5
Affichages
136

Statistiques des forums

Discussions
312 366
Messages
2 087 636
Membres
103 626
dernier inscrit
Valentino76