[MACRO] Copier une ligne X fois suivant la valeur de la cell
Bonjour,
Je me retrouve dans une situation où je pense qu'une macro devrais pouvoir le réaliser
Malheureusement mes connaissances sont limité
Je vous explique :
J'ai environ 200 lignes, tableau A4:AM200, dans la colonne I j'ai un nombre,
J'aimerai copier la ligne 4 et la coller autant de fois que le nombre dans la cellule I4.
si dans la cellule I4 j'ai : 5 la ligne 4 sera copié 4 fois (5-1), dans la même feuille, ou SI CELA EST PLUS SIMPLE copié 5 fois dans une nouvelle feuille.
si dans la cellule I25 j'ai : 8, je copie la ligne 7 fois (8-1).
une idée de comment procéder ?
Merci pour votre aide
bonjour
avant de te lancer dans une telle manœuvre qui va ajouter des dizaines de lignes, si tu disais quel est ton BUT ?
quel est l'objet de ton fichier Excel ?
gérer des livres ?
faire des calculs de statistiques ?
gérer des notes scolaires ?
préparer les dossards d'un marathon ?
?
Bonjour,
Essaie ainsi :
Sub Test()
Dim i%, j%, n%
With ActiveSheet
n = .Cells(.Rows.Count, 9).End(xlUp).Row
Application.ScreenUpdating = False
For i = n To 1 Step -1
If IsNumeric(.Cells(i, 9)) Then
j = .Cells(i, 9) - 1
If j > 0 Then
.Range("A" & i & ":AM" & i).Copy
.Range("A" & i + 1 & ":AM" & i + j).Insert xlShiftDown
End If
End If
Next i
End With
Application.CutCopyMode = False
End SubMais tu devrais te pencher sur la question de jmd...
Cordialement.
Bonjour,
merci de votre réponse rapide, si je n'ai pas parler du but, c'est pour vous éviter une partie technique qui n'est pas supposée vous dire grand chose, si vous pensez que cela est utile :
C'est la gestion de l'éclairage sportif, j'ai un inventaire par candélabre alors que je le veux par foyers, du coup j'ai une colonne nombre de foyers, pour chaque candélabre. Je veux donc dupliquer le tout, pour qu'une ligne corresponde à un foyer et non un candélabre.
Est-ce que tout ça va vraiment vous aider pour établir le fonctionnement de la macro je ne pense pas
Merci pour votre aide en tout cas, je teste et je reviens vers vous.
Ok, je viens de tester cela fonctionne parfaitement,
toutefois vu que je suis en plein apprentissage, J'ai mis mon commentaire mais pourriez commentez le code si le mien est incorrect ou incomplet ? merci
Sub Test() 'créer le nom de la fonction
Dim i%, j%, n% 'déclare mes variables en tant que nombre entier
With ActiveSheet 'sur la feuille active
n = .Cells(.Rows.Count, 9).End(xlUp).Row 'égal la valeur de la colonne 9
Application.ScreenUpdating = False
For i = n To 1 Step -1 'boucle sur chaque ligne
If IsNumeric(.Cells(i, 9)) Then 'test si la valeur est numérique pour la cellule ligne I colonne 9
j = .Cells(i, 9) - 1 'valeur de la cellule colonne 9 - 1
If j > 0 Then
.Range("A" & i & ":AM" & i).Copy 'copie la ligne I de la colonne A à la colonne AM
.Range("A" & i + 1 & ":AM" & i + j).Insert xlShiftDown 'colle la valeur dans la ligne du dessous autant de fois que la variable J
End If
End If
Next i
End With
Application.CutCopyMode = False 'a quoi cela sert ??
End Submerci beaucoup
Sub Test() 'créer le nom de la fonction
Dim i%, j%, n% 'déclare mes variables en tant que nombre entier
With ActiveSheet 'sur la feuille active
n = .Cells(.Rows.Count, 9).End(xlUp).Row '[barrer]égal la valeur de la colonne 9[/barrer] n° dernière ligne occupée en col. 9 (I)
Application.ScreenUpdating = False
For i = n To 1 Step -1 'boucle sur chaque ligne
If IsNumeric(.Cells(i, 9)) Then 'test si la valeur est numérique pour la cellule ligne I colonne 9
j = .Cells(i, 9) - 1 'valeur de la cellule colonne 9 - 1
If j > 0 Then
.Range("A" & i & ":AM" & i).Copy 'copie la ligne I de la colonne A à la colonne AM
.Range("A" & i + 1 & ":AM" & i + j).Insert xlShiftDown '[barrer]colle la valeur dans la ligne du dessous autant de fois que la variable J[/barrer] Insère j lignes sous la ligne copiée en la collant sur les lignes insérées
End If
End If
Next i
End With
Application.CutCopyMode = False 'a quoi cela sert ?? Vide le presse-papier, ce qui élimine l'encadrement scintillant de la ligne copiée (qui ne se produit pas spontanément dans ce cas)
End SubCordialement.
Mattieu a écrit :Bonjour,
merci de votre réponse rapide, si je n'ai pas parler du but, c'est pour vous éviter une partie technique qui n'est pas supposée vous dire grand chose, si vous pensez que cela est utile :
C'est la gestion de l'éclairage sportif, j'ai un inventaire par candélabre alors que je le veux par foyers, du coup j'ai une colonne nombre de foyers, pour chaque candélabre. Je veux donc dupliquer le tout, pour qu'une ligne corresponde à un foyer et non un candélabre.
Est-ce que tout ça va vraiment vous aider pour établir le fonctionnement de la macro je ne pense pas
insérer des lignes ne va pas te donner d'inventaire par foyer. Ou alors il faut aller sur site pour saisir les foyers.
il reste plus que probable que tu es parti sur une idée d'insertion de lignes, alors qu'il est possible de travailler sans.
quoi qu'il en soit, bonne soirée à toi et à MFerrand
amitiés excelliennes à tous