Extraire données vers plusieurs feuilles
FireGunz
-
via55 Messages postés 14730 Date d'inscription Statut Membre Dernière intervention -
via55 Messages postés 14730 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é.
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é.
A voir également:
- Extraire données vers plusieurs feuilles
- Fuite données maif - Guide
- Extraire une video youtube - Guide
- Comment faire un livret avec des feuilles a4 - Guide
- Extraire le son d'une vidéo - Guide
- Extraire image pdf - Guide
3 réponses
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
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
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 !
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 !
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 ?
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 ?
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
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
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.
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
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