Macro répétition d'un terme

Bonjour à tous,

J'ai besoin d'aide concernant une macro de répétition car je suis complètement débutant et je ne sais pas comment résoudre cela.

Sur l'onglet 1, en cellule A1 la cellule à répéter, en B1 le nombre de fois à répéter le terme. On peut aussi imaginer un bouton sur cet onglet qui permet de générer l'onglet 2, avec remise à zéro de l'ancienne liste.

Dans l'onglet 2, les termes répétés les uns en dessous des autres. Ci-joint un fichier d'exemple, j'ai utilisé un code couleur pour que cela soit plus clair.

Sachant que la liste dans l'onglet 1 ne sera pas limité à trois lignes mais à une cinquantaine.

Merci d'avance pour votre aide.

Bonjour,

Un test

Bonjour Sebsav,

je te retourne ton fichier modifié :

la 2ème feuille est entièrement vide ; va sur la 1ère feuille, et clique sur le bouton « Répétitions »


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Super, merci à vous deux pour le temps passé.

Sur ton fichier, M12, j'ai une erreur incompatibilité de type. C'est lié au fait que la cellule en A1 n'est pas forcément du numérique. Dans ce cas précis j'ai collé un terme au format texte.

Ça marche peu importe le type/format collé dans ton fichier dhany.

Bonne journée à vous deux et merci pour votre réactivité

merci pour ton retour ! bonne continuation !

dhany

Re,

De mon côté, cela fonctionne aussi

Bonjour le fil, bonjour le forum,

Très en retard, j'envoie quand même :

Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set OS = Worksheets("Feuil1") 'définit l'onglet OS
Set OD = Worksheets("Feuil2") 'définit l'onglet OD
OD.Cells.Clear 'efface toutes les cellules de l'onglet OD
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valerus TV
    'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de la colonne A de l'onglet OD)
    If OD.Range("A1").Value = "" Then Set DEST = OD.Range("A1") Else Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
    'renvoie la donnée ligne I colonne 1 de TV dans la cellule DEST redimensionnée au nombre de lignes de la valeur ligne I en colonne 2 de TV
    DEST.Resize(TV(I, 2), 1).Value = TV(I, 1)
Next I
OD.Columns(1).NumberFormat = OS.Range("A1").NumberFormat 'formate la colonne 1 (=A)de l'onglet OD
End Sub

Re,

De mon côté, cela fonctionne aussi

Re,

Oui en effet, ça fonctionne aussi, j'avais fait une erreur de manip. Cependant, la macro ne semble pas fonctionner avec une liste plus longue.

Je te rejoins ton fichier pour vérification.

Bonjour,

tout dépend du contexte, tu peux le faire sans macro

Bonjour à tous,

Exact, il manquait un petit .Row

Rechercher des sujets similaires à "macro repetition terme"