Comment multiplier une ligne par une quantité ?

cicis

XLDnaute Nouveau
Bonjour à tous,
je suis nouveau dans le forum et j'ai besoin de praticiens d'Excel. mon problème pourra paraître simple pour certains, mais je ne trouve pas de manière rapide d'arriver à mes fins, je m'explique:
pour réaliser une analyse stat sur un programme particulier, je dois préparer mon jeu de données en réalisant une pondération par le nombre de lignes. pour préciser je dispose d'un fichier avec 1730 lignes d'info diverses, chaque ligne comporte une variable qui est la surface en ares (ex: 170, 200, 1000). mon problème est de recopier dans un tableau la ligne autant de fois qu'il y a d'ares et de le faire pour les 1730 lignes.
ex: ligne n°1 C1 C2 C3... surface 227
Ligne °1 recopié 227 fois (de façon conventielle, c'est décourageant...)

j'ai joint le fichier correspondant pour comprendre mon problème.

Merci de m'éclairer
 

Pièces jointes

  • Données pour carottage 2.xls
    34.5 KB · Affichages: 194

Risleure

XLDnaute Occasionnel
Re : Comment multiplier une ligne par une quantité ?

Bonjour Cicis

Pas tout compris dans le fichier exemple :(
Mais as-tu essayé de mettre 227 dans une cellule et de "copier" cette cellule puis tu sélectionnes toute la zone où tu souhaites faire cette multiplication et ensuite "collage spéciale" choix d'opération : "multiplication"

Dis moi
A+
 

Jackis44

XLDnaute Nouveau
Re : Comment multiplier une ligne par une quantité ?

Bonjour CICIS,
Je ne suis pas un grand expert et tout neuf sur ce forum (2 jours !!)...
C'est donc avec beaucoup d'humilité que je te propose ma solution.
Tu la trouveras en pièce jointe, j'ai repris ton dossier et complété en feuille 1.
J'espère que cela pourra t'être utile
Bonne année et bons projets
Jackis
 
Dernière édition:

cicis

XLDnaute Nouveau
Re : Comment multiplier une ligne par une quantité ?

merci pour vos réponses.
pour répondre à RISLEURE, je connais la manip, c'est d'ailleurs comme cela que j'ai commencé, la difficulté c'est qu'il y a 1730 lignes à faire comme cela (le fichier envoyé est incomplet). en utilisant cette manip, j'en ai pour un temps indéterminé et je risque de faire des erreurs.
Jackis, as tu joint le fichier modifié ? je ne vois pas de fichier joint à ton message.
 

Excel-lent

XLDnaute Barbatruc
Recopier ligne x fois

Bonjour Cicis et bienvenu sur le forum,
Bonjour au fil,

Voici ci-joint ton fichier complété selon tes désidératas ci-dessus.

Par contre tu ne parle pas de la colonne D! J'ai remarqué que sur la colonne D de ta feuille "Données teruti", c'est ta surface (colonne C * 100).

Mais sur ta feuille "pondération surface", la colonne D semble être un numéro incrémenté à chaque changement de nouvelle ligne.

C'était juste pour toi pour t'y retrouver, ou tu veux que la macro le fasse également?

Bonne soirée de réveillon
 

Pièces jointes

  • Données pour carottage 2-1.xls
    46 KB · Affichages: 245
Dernière édition:

bqtr

XLDnaute Accro
Re : Comment multiplier une ligne par une quantité ?

Bonjour,

Voici un exemple par macro.

Code:
Option Explicit

Sub Copie()

Dim k As Long, m As Long, Derlign As Long, Nbre As Integer

Application.ScreenUpdating = False
For m = 2 To Range("A65536").End(xlUp).Row
  Derlign = Sheets("pondération surface").Range("A65536").End(xlUp).Row
  Nbre = Range("D" & m)
  Range("A" & m & ":k" & m).Copy Sheets("pondération surface").Range("A" & Derlign + 1 & ":k" & Derlign + 1 + Nbre - 1)
     For k = 1 To Nbre
       Sheets("pondération surface").Range("D" & Derlign + 1) = k
       Derlign = Derlign + 1
     Next
Next
Application.ScreenUpdating = True

End Sub
Tu risques d'avoir un problème avec le nombre de ligne de la feuille (limité à 65536), sauf si tu es sous Excel 2007.
Avec 11 lignes sur ton fichier, sur la feuille "pondération" tu arrives déjà à 2601 lignes.

Ca risque aussi de ramer un peu :(

Bon réveillon à tous :)

A+
 

Pièces jointes

  • Données pour carottage 2.zip
    8.5 KB · Affichages: 92
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Inactif
Re : Comment multiplier une ligne par une quantité ?

Bonsoir,

un exemple de code :

Code:
Sub ponderation()
Dim DerLig As Long, Cel As Range
Dim DerLig2 As Long
DerLig = Sheets("Données teruti").[A65536].End(xlUp).Row
If Application.Sum(Sheets("Données teruti").Range("D2:D" & DerLig)) > 56536 Then MsgBox "pas sur une feuille": Exit Sub
Sheets("pondération surface").Range("A2:K65536").ClearContents
For Each Cel In Sheets("Données teruti").Range("D2:D" & DerLig)
    With Sheets("pondération surface")
        DerLig2 = .[A65536].End(xlUp).Row + 1
        .Cells(DerLig2, 1).Resize(Cel.Value, 11).Value = Sheets("Données teruti").Cells(Cel.Row, 1).Resize(1, 11).Value
        .Cells(DerLig2, 4) = 1
        .Cells(DerLig2, 4).AutoFill Destination:=.Range(.Cells(DerLig2, 4), .Cells(DerLig2 + Cel.Value - 1, 4)), Type:=xlFillSeries
    End With
Next Cel
End Sub
 

amellena

XLDnaute Nouveau
Re : Comment multiplier une ligne par une quantité ?

Bonjour,
N'étant pas à l'aise avec le langage de la VBA ... quelqu'un pourrait-il me traduire avec des mots SVP la fonction ci-dessous. Car je croies que cet ancien post peut répondre à l'une de mes problématiques, mais je ne peux pas le reproduire sur mon fichier car je n'y comprend rien.
Pour info, mon excel est en francais ..
merci




QUOTE=bqtr;637108]Bonjour,

Voici un exemple par macro.

Code:
Option Explicit

Sub Copie()

Dim k As Long, m As Long, Derlign As Long, Nbre As Integer

Application.ScreenUpdating = False
For m = 2 To Range("A65536").End(xlUp).Row
  Derlign = Sheets("pondération surface").Range("A65536").End(xlUp).Row
  Nbre = Range("D" & m)
  Range("A" & m & ":k" & m).Copy Sheets("pondération surface").Range("A" & Derlign + 1 & ":k" & Derlign + 1 + Nbre - 1)
     For k = 1 To Nbre
       Sheets("pondération surface").Range("D" & Derlign + 1) = k
       Derlign = Derlign + 1
     Next
Next
Application.ScreenUpdating = True

End Sub
Tu risques d'avoir un problème avec le nombre de ligne de la feuille (limité à 65536), sauf si tu es sous Excel 2007.
Avec 11 lignes sur ton fichier, sur la feuille "pondération" tu arrives déjà à 2601 lignes.

Ca risque aussi de ramer un peu :(

Bon réveillon à tous :)

A+[/QUOTE]
 

cicis

XLDnaute Nouveau
Re : Comment multiplier une ligne par une quantité ?

bonjour à tous,
j'ai essayé les macros et ça marche au poil. :)
Effectivement la seule difficulté est la quantité de ligne limitée sur Excel 2003 mais pour moi c'est anecdotique.
Je vous remercie énormément pour le dépannage (même si cela semble une bricole pour les usagers du VBA), cela m'ôte une grosse épine du pied.
 

bqtr

XLDnaute Accro
Re : Comment multiplier une ligne par une quantité ?

Bonjour amellena,

Voici le code commenté :

Code:
Sub Copie()

1: Dim k As Integer, m As Long, Derlign As Long, Nbre As Integer

2: Application.ScreenUpdating = False
3: For m = 2 To Range("A65536").End(xlUp).Row
4:  Derlign = Sheets("pondération surface").Range("A65536").End(xlUp).Row
5:  Nbre = Range("D" & m)
6:  Range("A" & m & ":k" & m).Copy Sheets("pondération surface").Range("A" & Derlign + 1 & ":k" & Derlign + 1 + Nbre - 1)
7:     For k = 1 To Nbre
8:       Sheets("pondération surface").Range("D" & Derlign + 1) = k
9:       Derlign = Derlign + 1
10:    Next k
11: Next m
12: Application.ScreenUpdating = True

End Sub

'1: Déclartion des variables
'2: Gel de l'écran, permet d'accélérer l'exécution de la macro lorsqu'il y a beaucoup de ligne à traiter
'3: Boucle de la ligne 2 à la dernière ligne non vide de la colonne A de la feuille active
'4: La variable Derlign prend la valeur de la dernière ligne non vide de la colonne A de la feuille pondération surface.
'5: La variable Nbre prend la valeur de la ligne m de la colonne D de la feuille active (nombre de fois qu'il faudra copier la ligne m)
'6: Copie sur la feuille pondération surface de la ligne m colonne A à K de la feuille active. La taille de la plage de destination de la copie est précisée :
'   Colonne A à K de la première ligne vide de la colonne A (Derlign +1) à la ligne Nbre -1.
'7: Boucle de 1 à Nbre pour remplir la colonne D avec le nombre de copie.
'8: Remplissage de la colonne D de la feuille pondération surface
'9: incrémentation de la ligne à remplir : +1 à chaque boucle k, permet de passer à la ligne suivante pour remplir la colonne D
'10: Fin de la boucle K
'11: Fin de la boucle M
'12: Degel de l'écran
Bonne fin de journée

A+
 

jlcharat

XLDnaute Nouveau
Re : Comment multiplier une ligne par une quantité ?

Bonjour à tous et merci d'éclairer le novice que je suis.

Une variante au problème posé pourrait être :

Comment concaténer les lignes d'un tableau en fonction des données d'un deuxième tableau ?

Exemple :

Ligne 1(tableau A) + ligne 1(tableau B)
Ligne 1(tableau A) + ligne 2(tableau B)
Ligne 2(tableau A) + ligne 1(tableau B)
Ligne 2(tableau A) + ligne 2(tableau B)
-------------------------------------------

Merci de vos réponses
 

Excel-lent

XLDnaute Barbatruc
Re : Comment multiplier une ligne par une quantité ?

Bonjour et bienvenu sur le forum Jlcharat,

Je ne comprend pas bien ta question, peux-tu :
-> mettre ton fichier nettoyé en ligne
-> mettre quelques exemples de comment tu vois les choses

Et l'idéal, ouvre une nouvelle discussion! Une rien qu'à toi ;)

A te lire

Cordialement
 

Discussions similaires

Réponses
5
Affichages
213

Statistiques des forums

Discussions
314 450
Messages
2 109 727
Membres
110 552
dernier inscrit
jasson