1 fichier avec 2 feuillets : organiser les valeurs

Bonjour,

je me suis arraché les cheveux toutes la nuit pour ne pas réussir à fr ce que je souhaite faire.

Dans un fichier Excel (ci-joint) j'ai deux feuillets. Je souhaite modifier le feuillet 1 en prenant les données du feuillet 2.

J'ai mis en jaune ce qui doit être modifié.

C'est un catalogue produits avec des produits à variables (Tshirt 1 - rouge + Tshirt 1 - Bleu + Tshirt 2 - rouge + Tshirt 2 - orange...).

Chaque produit (et non variation) a un ID. C'est ce qu'on voit dans la colonne A mais aussi dans la colonne O.

J'ai une plusieurs centaines de produits à mettre dans le feuillet 2. Si je fais ça à la main avec des copiés/collés, j'aurai jamais terminé.

Quelqu'un pourrait m'aider SVP ? Je pense que je demande beaucoup sur ce coup la... Dites moi si c'est possible pr vous SVP

Merci en tout cas

bonjour,

une proposition

Sub aargh()
    Set ws = Sheets("feuil1")
    dl = ws.Cells(Rows.Count, 1).End(xlUp).Row
    With Sheets("feuil2")
        .Cells.Clear
        ligne = 1
        For i = 1 To dl
            If i = 1 Then
                ws.Rows(1).Copy .Rows(1)
            ElseIf ws.Cells(i, 1) <> "" Then
                ligne = ligne + 1
                ws.Rows(i).Copy .Rows(ligne)
                ws.Cells(i + 1, "Q").Copy .Cells(ligne, "Q")
            End If
        Next i
        .Columns("A:A").Delete shift:=xlToLeft
        .Columns("N:N").Delete shift:=xlToLeft
        .Columns("P:T").Delete shift:=xlToLeft
    End With
End Sub

Hello

merci beaucoup. Est-ce que tu peux m'expliquer ou me donner un lien qui explique comment utiliser ton code, l'importer dans mon fichier STP ? Car je consulte des tuto du type:https://www.youtube.com/watch?v=z9oObRe7B0w mais je ne suis même pas sûr que cela correspond.

Bonjour,

pour pouvoir utiliser cette macro

1) copier le code du forum (sélectionner puis copier Ctrl-C

2) ouvrir le classeur qui doit contenir la macro

3) faire alt-F11 pour aller dans l'éditeur de macro

4) faire menu->insérer->module

5) coller le code (ctrl-V)

6) adapter éventuellement le nom des onglets dans le code ("feuil1 et feuil2")

7) faire alt-F11 pour retour en excel

8) sauver le calsseur avec ses macros (format xlsm)

9) la macro est disponible et peut-être exécutée, faire alt-F8 pour lancer la macro

Merci j'arrive bien à fr fonctionner la Macro. Merci pour la liste des manipulations à faire.

Par contre le Feuil2 est le feuillet qui contient les données. Mais c'est le Feuil1 que je souhaite modifier grâce aux données du feuil2.

Je souhaite modifier le feuillet 1 en prenant les données du feuillet 2.

EDIT: j'upload le fichier avec la macro dedans

Bonjour,

sorry, une nouvelle tentative (car ce que tu veux exactement n'est pas très clair pour moi)

Voici ce que j'ai compris sur base de tes cellules coloriées en jaune...

On recopie le contenu des colonnes F et M dans les lignes produits et sous produits,

On recopie le contenu de la colonne N dans les lignes produits et

On recopie l'id du produit dans les lignes sous produit

Sub aargh()
    With Sheets("feuil2")
    dl = .Cells(Rows.Count, 1).End(xlUp).Row
        Set plageprod = .Cells(1, 1).Resize(dl)
    End With
    With Sheets("feuil1")
        dl = .Cells(Rows.Count, 2).End(xlUp).Row
        For i = 2 To dl
            If .Cells(i, 1) <> "" Then
                Set re = plageprod.Find(.Cells(i, 2).Value, lookat:=xlWhole, LookIn:=xlValues)
                ProdID = "id:" & .Cells(i, 1)
            End If
            If Not re Is Nothing Then
                .Cells(i, "G") = re.Range("F1")
                .Cells(i, "N") = re.Range("M1")
                If .Cells(i, 1) <> "" Then
                    .Cells(i, "P") = re.Range("N1")
                Else
                    .Cells(i, "O") = ProdID
                End If
            End If
        Next i
    End With
End Sub

Merci j'ai une erreur '424' quand j'execute le script.

Je check ton nvx code (quand il n'y aura plus l'erreur) et je tente de décrire au mieux par écrit ce que je voudrais fr

A priori c'est cette ligne qui cause problème :

If Not re Is Nothing Then

Bonjour,

manquant d'information, je fais des hypothèses. Apparemment, celles-ci ne sont pas correctes et donc le code ne fonctionne pas.

je vais m'arrêter là en attendant, devoir si les explications que tu fourniras me donnent envie de continuer à examiner ta demande.

mets-nous donc un fichier avec la situation de départ, la situation finale et les règles (la recette) pour passer de l'une à l'autre.

Ok pas de soucis

J'ai uploadé dans ce msg le fichier dont je parle.

La situation de départ, c'est la feuillet 2. C'est ça que j'ai actuellement comme données.

Ce sur quoi je souhaite arriver, c'est ce qu'il y a sur le feuillet 1. La j'ai mis à la main les 6 premières lignes dans le feuillet 1, mais normalement avec ce qu'il y a dans le feuillet 2, il devrait y avoir 3lignes * 5 produits = 15 lignes.

Dans le feuillet 1, il y a 3 lignes par produit.

1 ligne pour définir le produit + 2 lignes pour définir ses variantes.

Dans la colonne A il y a l'ID du produit. Cet ID est repris dans les deux lignes des variantes du produit dans la colonne O. L'iD du produit, c'est simple, ça commence par 900, le deuxième produit à l'ID 901, le troisième 902 etc.

Dans la colonne B il y a le titre du produit (premiere ligne) puis dans les deux lignes d'en dessous (les 2 variantes du produits) il y a le nom du produit + le nom de la variante (ici iPhone 7 puis iPhone 7 Plus).

Dans la colonne N, il y a l'URL de l'image du produit. L'url change pour chaque produit. Cependant l'URL est la même pour chaque variante du même produit. Donc l'URL changera toutes les 3 lignes (vu qu'il y a 1 ligne pour le produit + 2 lignes pr les variantes ce même produit).

Dans la colonne P, il y a la catégorie.

Dans le feuillet 2 il y a :

A : le nom du produit (la dans ce feuillet 2 il y a une ligne par produit car il n'y a aucune variante dans ce feuillet, et c'est bien la le problème, il faut que je créer les variantes dans le feuillet 1).

F: la description du produit

M l'URL de l'img du produit

N : la catégorie du produit.

Donc je souhaiterais qu'à partir du feuillet 2, ça génère un feuillet 1 avec la bonne mise en forme. Cad 3 lignes pour chaque produit (1 ligne pr le produit général + 2 lignes pour les variantes) et des ID de produits qui se suivent dans la colonne A et qui soient utilisé aussi dans la colonne O.

Si jamais il y a quelque chose que j'ai mal exprimé n'hésite pas surtout

bonjour,

un essai

Sub aargh()
    With Sheets("feuil2")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        Set ws = Sheets("feuil1")
        dlws = ws.Cells(Rows.Count, 2).End(xlUp).Row
        prod = 899
        ws.Cells(2, 1).Resize(dlws, 20).Clear
        ligne = 1
        For i = 2 To dl
            ligne = ligne + 1
            prod = prod + 1
            .Cells(i, 1).Resize(1, 13).Copy ws.Cells(ligne, 2).Resize(3, 13)
            .Cells(i, 14).Resize(1, 2).Copy ws.Cells(ligne, 16).Resize(3, 2)
            ws.Cells(ligne, 1) = prod
            ws.Cells(ligne + 1, 15).Resize(2) = "id:" & prod
            ws.Cells(ligne, 9) = ""
            ws.Cells(ligne, 17) = ""
            ws.Cells(ligne, 3) = "variable"
            ws.Cells(ligne + 1, 3).Resize(2) = "variante"
            ligne = ligne + 2
        Next i
    End With
End Sub

Hello

Roooh MERCI c'est presque magic !! Merci merci !

J'ai juste 2 bidouilles supplémentaires si c'est possible bien sûr...

Ca serait dans le Feuil1, dans la colonne B (Nom du produit), ne pas toucher la première ligne du produit (sur les 3 au total) mais rajouter "-1" puis "-2" au ligne en dessous qui correspondent au variations du produit.

  • Tjrs dans le Feuil1, dans la colonne C, ne pas mettre "variante" mais "variation". C'est moi qui me suis trompé dans le terme dans mes msg précédents dsl.
  • Tjrs dans le Feuil1, dans la colonne T (Valeur(s) de l'attribut 1), mettre "iPhone 7, iPhone 7 Plus" dans la première ligne du produit (sur les 3 au total) et "iPhone 7" pour la ligne d'en dessous (la premiere variation) et "iPhone 7 Plus" dans la ligne d'en dessous (la seconde variation du produit).
  • Tjrs dans le Feuil1, dans la colonne S, mettre "0" pr la première ligne du produit, puis "1" dans la deuxième ligne (donc la première variation du produit) et enfin "2" dans la 3 ligne, cad la seconde et dernière variation du produit.

Sincèrement en tout cas merci pour ta dernière réponse, ça m'a permis de faire un bon en avant immense

bonjour,

voici ma dernière contribution

Sub aargh()
    With Sheets("feuil2")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        Set ws = Sheets("feuil1")
        dlws = ws.Cells(Rows.Count, 2).End(xlUp).Row
        prod = 899
        ws.Cells(2, 1).Resize(dlws, 20).Clear
        ligne = 1
        For i = 2 To dl
            ligne = ligne + 1
            prod = prod + 1
            .Cells(i, 1).Resize(1, 13).Copy ws.Cells(ligne, 2).Resize(3, 13)
            .Cells(i, 14).Resize(1, 2).Copy ws.Cells(ligne, 16).Resize(3, 2)
            ws.Cells(ligne, 1) = prod
            ws.Cells(ligne + 1, 15).Resize(2) = "id:" & prod
            ws.Cells(ligne, 9) = ""
            ws.Cells(ligne, 17) = ""
            ws.Cells(ligne, 3) = "variable"
            ws.Cells(ligne + 1, 3).Resize(2) = "variation"
            ws.Cells(ligne, 19).Resize(3) = Application.Transpose(Split("0,1,2", ","))
            ws.Cells(ligne, 20).Resize(3) = Application.Transpose(Split("iPhone 7,iPhone 7 Plus!iPhone 7!iPhone 7 Plus", "!"))
            For j = 1 To 2
                ws.Cells(ligne + j, 2) = ws.Cells(ligne + j, 2) & "-" & j
            Next j
            ligne = ligne + 2
        Next i
    End With
End Sub
Rechercher des sujets similaires à "fichier feuillets organiser valeurs"