Extraire données vers plusieurs feuilles

Fermé
FireGunz - 15 févr. 2013 à 02:20
via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 - 18 févr. 2013 à 17:43
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é.


A voir également:

3 réponses

via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 2 703
15 févr. 2013 à 12:07
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
firegunz Messages postés 11 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 27 mars 2013
15 févr. 2013 à 15:13
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
via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 2 703
15 févr. 2013 à 15:41
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
firegunz Messages postés 11 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 27 mars 2013
15 févr. 2013 à 17:18
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
via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 2 703
15 févr. 2013 à 17:28
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
firegunz Messages postés 11 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 27 mars 2013
15 févr. 2013 à 19:58
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
via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 2 703
15 févr. 2013 à 23:56
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
firegunz Messages postés 11 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 27 mars 2013
18 févr. 2013 à 17:03
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
via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 2 703
18 févr. 2013 à 17:43
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