Dupliquer ligne selon condition de fréquence

Bonjour,

Je suis relativement novice dans le maniement d'Excel et je suis à la recherche d'un peu d'aide.

J'ai besoin d'une fonction, probablement en VBA que je suis bien incapable de créer. J'ai vu quelques idées intéressantes en cherchant sur le Net, mais rien qui a priori répond à mon problème. Explications :

J'ai un fichier issu de l'INSEE contenant quelques 50 000 lignes environ et je cherche a effectuer quelques traitements dessus.

Puisque le fichier est lourd, j'ai recréé un exemple simple, qui est joint.

Mes lignes comportent des informations variées (une seule dans l'exemple, en "A") et une fréquence en "B". Mon but est de dupliquer chacune des lignes autant de fois que la fréquence l'indique. Exemple :

Structure : contenu ; frequence

-> Avant :

Ligne 1 : poney ; 1

Ligne 2 : cheval ; 3

-> Après:

Ligne 1 : poney

Ligne 2 : cheval

Ligne 3 : cheval

Ligne 4 : cheval

Merci d'avance pour votre aide !

Bonjour

Sub rcp()
a = Feuil1.UsedRange
For i = 2 To UBound(a)
Feuil1.Cells(Rows.Count, 4).End(xlUp).Offset(1, 0).Resize(a(i, 2), 1) = a(i, 1)
Next
End Sub

Résultat dans la colonne D de votre feuil1.

Merci beaucoup, c'est ce que je cherchais.

En voyant le résultat, je me dis quand même que ce sera pas très lisible en l'appliquant à mes 50 000 lignes.

Y'aurait moyen de faire que le résultat soit inscrit dans une nouvelle feuille ? (Je suis certain que oui !)

Et si j'ai deux (ou plus) colonnes de contenu, ça se passerai comment pour les garder aussi ? Je n'arrive pas à comprendre si ton code copie les lignes entières ou juste la colonne "A".

Mon code duplique les informations fournies selon leurs fréquences fournies elles aussi


pour une dupplication des éléments fournis dans une autre feuille.

Encore une fois merci de cette aide.

Comme j'ai essayé de le dire dans le premier message, mais surement pas assez clairement pardon, j'ai fait là un fichier exemple très simplifié. Donc ton code est parfait pour cet exemple simple, mais finalement trop simple pour mon cas.

Dans mon fichier original, j'ai 10 colonnes par ligne, il faut que je duplique l'intégralité de ces 10 colonnes.

J'ai modifié mon fichier pour intégrer cela, le plus simplement possible :

  • La fréquence est maintenant dans la première colonne. C'est sa position fixe.
  • Sont a dupliquer l'ensemble des colonnes se trouvant à droite de la première colonne, peut importe le nombre qu'il y en aurait (d'où les "..."). Comment indiquer facilement dans la macro l'étendue de colonnes à recopier (de "B" à "x") ?

Si tu as moyen de modifier ton code pour faire cela, ce sera terminé !

Ps : Merci pour le bouton pour lancer la macro, j'en avais pas besoin là, mais en fouillant ça m'a appris comment les créer. Je saurais faire ça la prochaine fois !

Voici une macro assez tangible qui vous va répondre aux questions

Sub rcp()
Dim ligne As Integer, colonne As Integer

Feuil1.Activate
    ligne = Feuil1.UsedRange.Rows.Count    'nb lignes utilisées en feuille 1
    colonne = Feuil1.UsedRange.Columns.Count    'nb de colonne utilisées en feuille 1

    For i = 2 To ligne
        Feuil1.Range(Cells(i, 1), Cells(i, colonne)).Copy Feuil2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(Feuil1.Cells(i, 1), colonne)
    Next

Feuil2.Activate
'Columns(1).Delete 'optionnel
End Sub

Merci beaucoup, je n'ai pas pu répondre plus tôt, j'ayant pas accès à un ordinateur.

Je n'ai pas pu tester en profondeur mais à première vue, ce code est parfait, il fait ce dont j'ai besoin.

Merci beaucoup beaucoup pour cette aide, rapide qui plus est.

PS : je passe en résolu.

Rechercher des sujets similaires à "dupliquer ligne condition frequence"