Extraire données vers plusieurs feuilles

FireGunz -  
via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Bonjour,

Je suis actuellement stagiaire dans une entreprise et j'ai pour tâche de réaliser une feuille par produit et un fichier excel par collection.
Je m'explique, j'ai un document avec la référence de l'article, sa collection, description et prix.
Et je dois donc les extraire vers différentes feuilles. Ces feuilles ont toutes le même format, c'est pour que l'entreprise cliente puisse rentrer ces produits dans sa base de donnée.
J'ai essayé de chercher sur internet une résolution à mon problème mais comme le sujet est un peu vaste...

Je vous remercie d'avance pour l'aide que vous m'aurez apporté.

3 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour,

    Une feuille par produit, un fichier par collection, un document et extraire vers differentes feuilles ... ce n'est pas très clair
    Quels classeurs et quelles feuilles existent déjà, lesquels sont à créer ?

    Pourrais tu poster un exemple du fichier et du "document" allégé et anonymé sur cjoint.com et indiquer le lien fourni dans un prochain message?

    Cdlmnt
    0
  2. firegunz Messages postés 14 Statut Membre
     
    Voila un extrait modifie du classeur ( qui n'a qu'une feuille) de la liste de reference souhaite:
    https://www.cjoint.com/?CBppkg4tWmg

    Et le deuxieme classeur. Un classeur par collection et une feuille par article
    https://www.cjoint.com/c/CBppk1pneKV

    Merci d'avance !
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Ce que je ne comprends pas c'est où se trouve exactement indiquée le nom de la collection dans la liste de reference
      Il doit y avoir plusieurs collection sur la liste ou as tu une liste differente par collection ?
      0
    2. firegunz Messages postés 14 Statut Membre
       
      Merci pour ta reponse
      Le nom de la collection est indique en A1, je l'ai appelle "Collection", chaque collection a un numeros de patern. Une reference d'un article est donc en deux parties, son numeros de collection et son numeros d'item.
      Je n'ai mits qu'une collection dans le fichier, cela pose problem ?
      0
    3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Ce que je dois savoir c'est où sont les autres collections ?
      Sur la même feuille ? et dans ce cas où ?
      Sur une autre liste ? Autrement dit as tu une liste par collection ?

      car pour pouvoir copier les données par un code VBA il faut savoir où elles sont, où elles commencent et où elles finissent
      0
    4. firegunz Messages postés 14 Statut Membre
       
      Elles sont toutes sur la meme feuille mais avec des espaces entre chaque collection.
      J'ai des incoherences dans mes donnes du coup je vais le faire a la main je pense.
      si tu peux quand meme me donner la methode vba pour que je sache la prochaine fois.
      Encore merci !
      0
    5. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      C'est ce que je craignais !
      Difficile pour le vba de savoir où commencent et où finissent les données, on pourrait tester les espaces mais sont ils toujours identiques? pas sur !
      le plus simple (mais faut faire une partie à mano) serait de rajouter à gauche une colonne pour la collection et indiquer en face de chaque article sa collection (il suffit de mettre le nom sur la ligne du 1er article et de tirer vers le bas pour recopier sur les lignes suivantes)
      Je prépare une macro sur la base de ce document ainsi "amélioré" et je te post dès que possible
      0
  3. firegunz Messages postés 14 Statut Membre
     
    Cela ne fonctionne pas, j'ai bien la fenetre de dialogue qui s'affiche mais quand je met le nom du classeur sa me dit qu'il n'est pas ouvert. Par ailleurs aurais tu un lien expliquant comment se servir des macros s'il te plait ? Car je voudrais le modififer pour qu'il s'adapte parfaitement.
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      C'est que tu ne dois pas mettre le bon nom de classeur

      Change le nom du second classeur que je t'avais envoyé mets un nom simple style"Collections"

      Ouvre ce classeur

      Puis tu ouvres le premier et tu indiques bien le même nom Collections dans la fenetre de dialogue, ça devrait marcher

      je te remets la macro avec des explications

      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

      ceclasseur = ThisWorkbook.Name 'Recupere le nom du classeur
      cettefeuille = ActiveSheet.Name 'recupere nom de la feuille active

      If Target.Column > 1 Then Exit Sub 'si le doubleclic a eu lieu en dehors de la colonne 1 sortie de la macro
      ligne = Target.Row 'récupere le n° de la ligne du double clic
      collec = Target.Value 'recupere la valeur de la cellule du double clic
      ' boite de dialogue pour demander confrmation
      r = MsgBox("Confirmer la recopie des artcles de " & collec, vbYesNo, "RECOPIE DONNEES")

      Select Case r 'choix en fonction de la reponse donnée
      Case vbNo: Exit Sub 'si clic sur non sortie de la macro
      Case vbYes 'si clic sur oui on poursuit

      On Error GoTo erreur ' en cas d'erreur aller en dessous à erreur

      nomclasseur = InputBox("Nom du classeur OUVERT où recopier les données ?") 'demande nom du classeur
      Workbooks(nomclasseur).Activate ' verifie que le classeur demandé est ouvert
      ' boucle se repetant tant que le nom est identique en colonne 1
      Do While Workbooks(ceclasseur).Sheets(1).Cells(ligne, 1) = collec
      Sheets("MODELE").Select
      Sheets("MODELE").Copy Before:=Sheets("MODELE") 'copie la feuille modele apres l'avoir selectionnéeet place la copie avant la feuille modele
      Sheets("MODELE (2)").Select 'selectionne la copie
      nomfeuille = "A" & Workbooks(ceclasseur).Sheets(1).Cells(ligne, 2).Value 'recupere le code en colonne 2
      Sheets("MODELE (2)").Name = nomfeuille 'donne à la nouvelle feuille comme nom le code recupere

      Sheets(nomfeuille).Cells(3, 2).Value = Workbooks(ceclasseur).Sheets(cettefeuille).Cells(ligne, 2).Value 'place en cellule ligne 3 colonne 2 de la nouveille feuille la valeur ligne en cours colonne 2 de la feuille source du fichier source
      Sheets(nomfeuille).Cells(4, 2).Value = Workbooks(ceclasseur).Sheets(cettefeuille).Cells(ligne, 4).Value
      ligne = ligne + 1 ' augmente le compteur de ligen de 1
      Loop 'fin de boucle

      End Select ' fin de choix

      Exit Sub 'sortie de la macro

      erreur: 'ce qui se passe en cas d'erreur
      ' message d'erreur à afficher
      MsgBox ("Operation annulée" & vbNewLine & "Le classeur chosi n'est pas ouvert" & vbNewLine & "ou la feuille à créer existe déjà")
      ' selectionne la copie du modele crée et l'efface
      Sheets("MODELE (2)").Select
      ActiveWindow.SelectedSheets.Delete


      End Sub


      Tiens moi au courant
      0