3 = 3 lignes sur autre feuille...

  • Initiateur de la discussion Initiateur de la discussion bbobb
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bbobb

XLDnaute Occasionnel
Bonjour le forum,
En feuil1 :
Cellule A2 : 2 Cellule B2, la quantité : 3
Cellule A3 : 1 Cellule B3, la quantité : 1
etc...

Je voudrais par macro obtenir en feuil2 colonne A :
3 lignes avec 2
1 lignes avec 1
etc...

Pas sur d'être très clair je joins un fichier...
Merci d'avance pour votre aide
Bonne journée
Bbobb
 

Pièces jointes

Re : 3 = 3 lignes sur autre feuille...

Bonjour à tous,

Peux-tu essayer ceci dans un module :

VB:
Option Explicit


Sub Export()
    Dim i&, j&, k&, T(), Tmp()
    ReDim Preserve T(1 To 2, 0 To 0)
    With Feuil1
        For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            For j = 1 To .Cells(i, 2)
                ReDim Preserve T(1 To 2, 0 To UBound(T, 2) + 1)
                For k = 1 To 2
                    T(k, UBound(T, 2)) = .Cells(i, k)
                Next k
            Next j
        Next i
    End With
    With Feuil2
        Tmp = .Range(.Cells(1, 1), .Cells(1, 2)).Value
        .Columns("A:C").ClearContents
        .Cells(1, 1).Resize(UBound(T, 2) + 1, 2) = Application.Transpose(T)
        .Range(.Cells(1, 1), .Cells(1, 2)).Value = Tmp
    End With
End Sub

A + à tous

Edition : Salut mon Nono...
 
Dernière édition:
Re : 3 = 3 lignes sur autre feuille...

Salut bbobb

Voici le code pour ce que tu souhaites
VB:
Sub CréerLigneSelonQt()
  Dim DLig As Long, lig As Long, Ind As Integer
  Dim Nlig As Long
  ' Avec la feuille source
  With Sheets("Feuil1")
    ' Trouver la dernière ligne remplie du tableau
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Pour chaque ligne de la feuille
    For lig = 2 To DLig
      ' Pour chaque quantité de la ligne
      For Ind = 1 To .Range("B" & lig)
        ' Trouver la la ligne suivante de la feuille de destination
        Nlig = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row + 1
        ' Inscrire dans la feuille destination
        ' la quantité de la ligne actuelle de la feuille source
        Sheets("Feuil2").Range("A" & Nlig) = .Range("A" & lig)
      Next Ind
    Next lig
  End With
End Sub

A+

Edit : oups, salut mon JC (passer par un tableau, c mieux 😉)
 
Re : 3 = 3 lignes sur autre feuille...

Bonjour JCGL,
C'est exactement ce que je voulais faire à 1 ou 2 déail près 🙂....
Mes compétence VBA sont trop juste pour modifier ton code.
Peux-tu m'aider pour :
Feuil2 : ne pas modifier la ligne de titre (ligne 1)
Feuil2 : ne pas recopier la quantité (laisser la colonne B vide).

Merci d'avance

Bbobb
 
Re : 3 = 3 lignes sur autre feuille...

Bonjour à tous,
Salut Nono,

Peux-tu essayer :

VB:
Option Explicit


Sub Export()
    Dim i&, j&, k&, T(), Tmp()
    ReDim Preserve T(1 To 2, 0 To 0)
    With Feuil1
        For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            For j = 1 To .Cells(i, 2)
                ReDim Preserve T(1 To 2, 0 To UBound(T, 2) + 1)
                For k = 1 To 2
                    T(k, UBound(T, 2)) = .Cells(i, k)
                Next k
            Next j
        Next i
    End With
    With Feuil2
        Tmp = .Range(.Cells(1, 1), .Cells(1, 2)).Value
        .Range("A2:B65000").ClearContents
        .Cells(1, 1).Resize(UBound(T, 2) + 1, 1) = Application.Transpose(T)
        .Range(.Cells(1, 1), .Cells(1, 2)).Value = Tmp
    End With
End Sub

A + à tous
 
Re : 3 = 3 lignes sur autre feuille...

Re bonjour à tous,
Merci pour votre aide. Les différentes méthode fonctionnent très bien dans le fichier exemple mais je n'arrive pas à le transposer sur mon fichier d'origine. Je joint donc un nouveau fichier similaire à l'original :
Donc je reprend :
Feuil1 :
j'ai 3 (cellule M32) sac de pièces de 2€ (cellule B32)
j'ai 1 (cellule M33) sac de pièces de 1€ (cellule B33)
Etc jusqu'au cellule M36 et B36

Et je dois obtenir feuil2 :
A6 = 2
A7 = 2
A8 = 2
A9 = 1
Etc...

Bonne journée à tous
Bbobb
 
Dernière édition:
Re : 3 = 3 lignes sur autre feuille...

Re,

Re bonjour à tous,
Merci pour votre aide. Les différentes méthode fonctionnent très bien dans le fichier exemple mais je n'arrive pas à le transposer sur mon fichier d'origine. Je joint donc un nouveau fichier similaire à l'original
Et voilà c'est l'éternel problème 🙁

Mais pourquoi ne mettez vous pas le bon fichier dès le départ 😡😕

Perso, j'aurais tendance à dire ... et bien dém*rde toi maintenant
Mais d'autre seront plus sympa, alors bon courage
 
Re : 3 = 3 lignes sur autre feuille...

(re) Bonjour bbobb,

Comme c'est dimanche et comme faute à 1/2 avouée....etc ( 🙂 ), je joins une tentative en VBA.
Code:
Sub CréerLigneSelonQt()
   Dim i As Long, j As Long, x As Range
   
   Sheets("Feuil2").Range("A6:B30").ClearContents
   Set x = Sheets("Feuil2").Range("A6")
   With Sheets("Feuil1")
      For i = 32 To 36
         If IsNumeric(.Cells(i, "m")) Then
            For j = 1 To .Cells(i, "m")
               x = .Cells(i, "b")
               Set x = x.Offset(1)
            Next j
         End If
      Next i
   End With
End Sub
 

Pièces jointes

Dernière édition:
Re : 3 = 3 lignes sur autre feuille...

Bonjour mapomme,
Merci pour ton aide. La solution par formule n'est malheureusement pas applicable.
J'ai trouvé une autre solution surement "fastidieuse"... mais qui fonctionne.
Fichier joint.

Merci à tous.
Bonne journée

Bbobb
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
279
wDog66
W
Réponses
14
Affichages
588
Retour