Remplir une feuille en fonction de valeurs de cellules

Y compris Power BI, Power Query et toute autre question en lien avec Excel
J
JeanJul
Jeune membre
Jeune membre
Messages : 24
Inscrit le : 23 novembre 2016
Version d'Excel : 2010

Message par JeanJul » 23 novembre 2016, 20:00

Bonjour,
Je n'ai pas trouvé mon bonheur sur le net alors, me voilà.
J'ai fait des test avec indirect et Loop (désolé je n'ai pas les codes ni les fichiers ils sont au boulot)

Je souhaite renseigner automatiquement des lignes dans une feuille en fonction de quantité d'une autre feuille.
Je m'explique, j'ai:
Feuille 1
1- 5 Table (avec 5 en A et Table en B)
2- 3 Chaise
3- Etc...
pour avoir:
Feuille 2
1- Table
2- Table
3- Table
4- Table
5- Table
6- Chaise
7- Chaise
8- Chaise
9- Etc...

Merci par avance
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'337
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 23 novembre 2016, 20:35

Bonjour,

Essaie cette macro :
Sub Test()
Dim WsS As Worksheet, WsC As Worksheet
Dim Cel As Range, Cible As Range
    Set WsS = Worksheets("Feuil1")
    Set WsC = Worksheets("Feuil2")
    For Each Cel In WsS.Range("A2", WsS.Range("A" & Rows.Count).End(xlUp))
        Set Cible = WsC.Range("A" & Rows.Count).End(xlUp)(2)
        Cel.Offset(, 1).Copy Cible
        Cible.AutoFill Cible.Resize(Cel.Value)
    Next Cel
End Sub
A+
J
JeanJul
Jeune membre
Jeune membre
Messages : 24
Inscrit le : 23 novembre 2016
Version d'Excel : 2010

Message par JeanJul » 23 novembre 2016, 21:09

Super, un premier grand pas! Grand merci!!
ça fonctionne la feuille 2 est bien rempli par contre j'ai un message d'erreur.
du coup je ne voyais pas faire ça en macro j'ai encore beaucoup de mal avec les macros et je ne vois pas comment prendre en compte une modif sur les quantité de la feuille 1.
test remplissage.xlsm
(17.63 Kio) Téléchargé 29 fois
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'337
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 23 novembre 2016, 23:07

L'erreur vient du fait que tu utilises un tableau.
Les lignes vides de ce tableau sont prises en compte dans la détermination de la dernière ligne à traiter, ce qui induit une erreur puisque la quantité est nulle et une recopie sur 0 ligne n'a pas de sens.

Le plus simple est d'ajouter un test pour la prise en compte des lignes vides.
Sub test_creation_ligne()
Dim WsS As Worksheet, WsC As Worksheet
Dim Cel As Range, Cible As Range
    Set WsS = Worksheets("Feuil1")
    Set WsC = Worksheets("Feuil2")
    For Each Cel In WsS.Range("A2", WsS.Range("A" & Rows.Count).End(xlUp))
        Set Cible = WsC.Range("A" & Rows.Count).End(xlUp)(2)
        If Cel <> "" Then
            Cel.Offset(, 1).Copy Cible
            Cible.AutoFill Cible.Resize(Cel.Value)
        End If
    Next Cel
End Sub
A+
J
JeanJul
Jeune membre
Jeune membre
Messages : 24
Inscrit le : 23 novembre 2016
Version d'Excel : 2010

Message par JeanJul » 23 novembre 2016, 23:10

T'es un chef,

Le PC est fermé mais je test ça demain. Merci beaucoup.
J
JeanJul
Jeune membre
Jeune membre
Messages : 24
Inscrit le : 23 novembre 2016
Version d'Excel : 2010

Message par JeanJul » 30 novembre 2016, 13:32

Hello,
Je reviens car après essai du code dans mon fichier,
l'insertion se fait à chaque fois en dessous du tableau. j'ai ajouter une fonction effacer mais rien n'y fait mais ça ne change pas grand chose mise à part que je ne me trouve pas avec une liste à rallonge.

Merci
test remplissage.xlsm
(19.25 Kio) Téléchargé 23 fois
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'337
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 30 novembre 2016, 22:53

Bonjour,

Pourquoi placer un tableau en Feuil2 ?
Le traitement se fait très bien sans cela.

A+
test remplissage.xlsm
(18.39 Kio) Téléchargé 35 fois
J
JeanJul
Jeune membre
Jeune membre
Messages : 24
Inscrit le : 23 novembre 2016
Version d'Excel : 2010

Message par JeanJul » 1 décembre 2016, 11:47

Bonjour, et merci je regarde ça.
Simplement car j'ai Beaucoup d'autre donné qui viennent s'ajouter avec besoin de tri et autre.
J
JeanJul
Jeune membre
Jeune membre
Messages : 24
Inscrit le : 23 novembre 2016
Version d'Excel : 2010

Message par JeanJul » 1 décembre 2016, 12:09

ha, problème, je n'arrive pas à télécharger la PJ. Peux tu me mettre le code en accès direct? merci par avance.
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'337
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 1 décembre 2016, 12:37

Le même en version 97 - 2003 :
test remplissage.xls
(42 Kio) Téléchargé 23 fois
Sinon, je n'ai rien changé au code.
J'ai simplement converti le tableau en plage.
Sub test_creation_ligne()
Dim WsS As Worksheet, WsC As Worksheet
Dim Cel As Range, Cible As Range
    Set WsS = Worksheets("Feuil1")
    Set WsC = Worksheets("Feuil2")
    Worksheets("Feuil2").Range("A2:A60000").ClearContents
    For Each Cel In WsS.Range("A2", WsS.Range("A" & Rows.Count).End(xlUp))
        Set Cible = WsC.Range("A" & Rows.Count).End(xlUp)(2)
        If Cel <> "" Then
            Cel.Offset(, 1).Copy Cible
            Cible.AutoFill Cible.Resize(Cel.Value)
        End If
    Next Cel
    WsC.Activate
    Set WsS = Nothing: Set WsC = Nothing
End Sub
A+
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message