Insérer un ligne suivant une cellule et recopier les données

Bonjour à Tous,

Après avoir lu plusieurs tutoriels et exemples je n'arrive pas à réaliser ma macro.

Les conditions :

  • Insérer une ligne au dessus chaque fois que la colonne "G" contient la valeur "1".
  • Puis Copier toutes les valeurs précédentes sur cette nouvelle ligne (colonne A à F).
  • Puis Insérer une ligne au dessus chaque fois que la colonne "Q" contient la valeur "1".
  • Puis Copier toutes les valeurs précédentes sur cette nouvelle ligne (colonne A à P)

Sur mon fichier, vous avez dans le premier onglet (Histo) les valeurs, et dans le deuxième onglet, ce à quoi j'aimerai arriver.

En vert, les 2 premières conditions (insérer une ligne au dessus si la colonne G contient 1 et copier les valeurs de A à F dessus)

En bleu, les 2 conditions suivantes (insérer une ligne au dessus si la colonne q contient 1 et copier les valeurs de A à P dessus)

Je vous joins mon fichier.

Merci d'avance pour votre aide,

Cordialement

16histo-test.xlsx (15.03 Ko)

Bonjour TaoPoyPoy,

Voici un fichier à essayer :

15histo-test.xlsm (26.84 Ko)

Bonjour Florian53,

Merci de ton aide ...

En effet, c'est exactement ce que je souhaitais faire (sans les couleurs, mais c'est pas grave).

Maintenant je vais essayer de décortiquer ton code pour y comprendre quelque chose.

Par contre, si j'ajoute des données dans le 1er onglet (car c'est un gros fichier historique) j'ai un message d'erreur :

Erreur d’exécution '6' : Dépassement de capacité

Quand je regarde le debogage, il s'agit de : derlgn = Ws.Range("A" & Rows.Count).End(xlUp).Row

Pour information, les lignes peuvent atteindre 60000

Cela provient d'ou ?

Merci d''avance pour ton aide.

Cordialement,

Voici un nouveau fichier qui devrait résoudre le problème.

15histo-test.xlsm (27.87 Ko)

Encore une fois merci de te pencher sur mon problème !

J'ai remarqué aussi tes commentaires qui vont beaucoup m'aider à comprendre ton code ! merci

J'ai essayé ton nouveau fichier, mais j'ai une erreur :

"Nous ne trouvons pas ...\Fonctions_Personnalisée_FG.xlam"

Autant pour moi j'avais mis une liaison sur mes fonctions pour tester le fichier, voici un nouveau fichier sans liaison.

10histo-test.xlsm (26.91 Ko)

Je viens de tester avec un petit peu plus de 33 000 lignes.

J'ai attendu 1/2h, mais le fichier travaillait toujours, mais rien ne se passait.

J'ai testé de nouveau avec 13 000 lignes, c'est pareil ... Excel ne répond plus.

Il y a un nombre limité de lignes pour ce script ? ou bien c'est normal, il faut laisser Excel travailler ?

(Je joins mon fichier avec pratiquement 13000 lignes)

8histo-1000.xlsx (782.74 Ko)

Autre précision, mon fichier contient des colonnes jusqu'à "AQ" (voir fichier joint)

7histo-test.xlsm (26.60 Ko)

Je viens de faire l'essai avec tes 13000 lignes, j'ai mis 7 minutes. je vais voir ce qui prends du temps et je te tiens au courant

Merci beaucoup !

C'est très gentil de m'aider.

Bonjour TaoPoyPoy,

Voici un nouveau fichier ( 1 secondes pour 13000 lignes ) je te laisse l'essayer avec tes données.

11histo-test-v2.xlsm (800.93 Ko)

Impeccable !!!

Je tiens à te remercier énormément pour ton aide, tu me permets de gagner un temps énorme sur le traitement des fichiers historique.

En plus avec tes annotations, je vais pouvoir apprendre sur le code que tu as fait, c'est un bonus pour moi

Donc pour résumer : un GRAND MERCI à toi

Super, qu'elle est le temps d’exécution sur ton fichier du coup ?

Sur un fichier d'un peu plus de 37000 lignes, cela met environ 15s.

Et cela correspond à un seul mois d'historique, donc je dois le reproduire plusieurs fois.

Mais c'est Impeccable, je mets seulement quelques secondes à traiter mois par mois, alors qu'avant je mettais plus d'une demi-journée pour traiter un mois

J'ai vu aussi que tu as traité les colonnes supplémentaires que je pouvais rajouter, car cela a fonctionné dès le 1er coup

Encore merci pour tout

Rechercher des sujets similaires à "inserer ligne suivant recopier donnees"