Apellé une feuille d'un fichier excel dans un autre en fonction d'une ligne

loooow - 24 avril 2013 à 14:35
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 26 avril 2013 à 11:53
Bonjour,

j'ai besoin d'aide pour la création d'une macro, j'explique:

J'ai un fichier excel contenant plusieurs pages.
Je voudrais que la macro lise chaque ligne de la page numéro 2 par exemple
Selon ce qu'il y a inscrit dans cette ligne (Demi coquille, SSABS2216, SSP, ...)
qu'elle m'ouvre un nouveau excel avec une page représentant chaque ligne et que dans chaque page elle inscrive le tableau correspondant.
Sachant que j'ai tout les tableaux référencé dans différentes page d'un autre fichier Excel nommé FicherAExtraire.

Quelqu'un peut m'aider svp.????

Je peux envoyer tout les fichiers necessaire a qui peut m'aider. C'est assez urgent..
Merci d'avance.

20 réponses

Utilisateur anonyme
24 avril 2013 à 15:08
Bonjour,
Quand tu parles de pages tu veux dire des feuilles? (Feuil1, Feuil2 etc)?


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Oui tout a fait.
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
24 avril 2013 à 15:43
Bonjour le forum !

Un fait c'est un projet découpé en diverses questions sur divers forums
avec évidemment peu de précisions … Bon courage !

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
Utilisateur anonyme
24 avril 2013 à 15:46
Bien alors tu as du commence par lire toutes les lignes utilisées de la Feuil2 avec (par exemple) UsedRange.
Montre nous le code que tu as fait déjà.

Quand tu mets un code sur le forum, utilise s'il te plait les balises de code VB, la troisième icone en haut en partant de droite, sinon ton code est illisible sur le forum.

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
24 avril 2013 à 15:48
Correction : ce n'est peut-être pas un projet découpé mais l'urgence a déjà été postée
en double sur un autre forum …

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
J'ai vraiment besoin d'aide, c'est assez urgent, j'ai déjà cherché sur beaucoup de forum mais étant novice je ne m'en sors pas et je n'ai pas le droit a l'erreur. Aidez moi exceptionnellement svp..
0
Alors tu vas rire mais je ne sais pas du tout comment faire, par ou commencer etc.
Pour l'instant avc mon interface graphique je n'ai fait que ouvrir, chercher le fichier ou il y a les lignes a lire et quitter.

Private Sub Choix_Click()

 'On commence par récupérer le nom du fichier qui contien cette macro:
 fichier_MODELE = ThisWorkbook.Name
 
 '*********************************************************
 'Ouvrir un fichier à partir du controle common Dialog
 '*********************************************************
    ' si un fichier à déja été ouvert il faut le fermer
    If fichier <> "" Then
       ActiveWorkbook.Close savesanges = xlDoNotSaveChanges
       fichier = ""
       TxtFichier.Text = ""
       TxtMSN.Text = ""
    End If
    chemin = ap_OpenFile("", "Selection du fichier (*.xls)", "*.xls")
    If Len(chemin) > 0 Then
       fichier = ""
       For i = Len(chemin) To 1 Step -1
        If Mid(chemin, i, 1) = "" Then
          Exit For
        Else
          fichier = Mid(chemin, i, 1) & fichier
        End If
       Next i
       'donne le fichier selectionné.
            repertoire = Mid(chemin, 1, Len(chemin) - Len(fichier))
            TxtFichier.Text = fichier
            Workbooks.Open Filename:=repertoire & fichier
       'Visualise la 1er ligne.
            Range("A1:A1").Select
       'donne le MSN ciblé.
           'msn = Mid(fichier, 12, 5)
           ' TxtMSN.Text = msn
            'temp = "0000" & Mid(msn, 4) & "H" ' mise au format XP0011H
            'num_msn = Right(temp, 5)
    Else
       MsgBox ("Annulation de l'opération")
    End If
End Sub


Private Sub Quitter_Click()

    If fichier <> "" Then
       ActiveWorkbook.Close savesanges = xlDoNotSaveChanges
       fichier = ""
       TxtFichier.Text = ""
       Cbxfeuille.Clear
    End If
    End
End Sub

0
Utilisateur anonyme
24 avril 2013 à 16:14
c'est assez urgent

Oui... j'espère qu'il te reste quelques mois pour apprendre les bases de VBA...
Parce que si tu cherches une application toute faite tu ne l'auras pas, il va falloir travailler pour y arriver.

Il est où ce bouton "Choix" ? sur une feuille, sur une UserForm ?



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
oui exactement. Je sais bien qu'il va me falloir du temps. Pour linstant c'est juste une macro d'urgence..
0
Utilisateur anonyme
24 avril 2013 à 16:36
Tu portes bien ton pseudo...
Pour l'instant avc mon interface graphique je n'ai fait que ouvrir, chercher le fichier

Quel interface? un UserForm? pourquoi tu veux ouvrir un fichier?
C'est sur le fichier (classeur) qui contient les lignes lui même que tu dois coder, les lire et en suite créer tes autres classeurs, un par ligne lue (d'après ce que j'ai compris).

Est-ce comme ça que tu procèdes?

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Oui j'ai créer une interface pour permettre a l'utilisateur d'aller chercher le fichier qu'il souhaite. Parce selon les affaires(en aero) c'est pas le meme fichier a chaque fois.
Je code sur la fenetre excel qui va ouvrir ce fichier.!
Oui ensuite je veux créer un autre excel avec un tableau (deja créer dans un autre fichier excel) different par ligne lue, donc a mon avis il faut qu'une ligne corresponde a une page et aller chercher le fichier coorespond a chaque ligne pour le mettre dans la bonne fenetre. Ce fichier la je le formate aprés et le passe en PDF mais ca c'est deja fait.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 avril 2013 à 21:41
Bonjour,
Ouais... C'est vraiment super clair, tout cela ... et très "techniquement" exposé ... Surtout la création de "un autre excel" ( ton ooo personnel ? ou quoi ?), etc ....
Bon. J'ai sommeil.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
J'ai essayer de faire un peu quelque chose.. je vous le place en copie.
J'espère que vous pourrez m'aider à faire fonctionner ce petit projet, mon premier.
J'ai cherché et lu beaucoup de forum mais aucun cas identique alors il est vrai que j'ai du mal à adapter et m'en sortir.
Merci beaucoup.

Private Sub Extraire_Click()

If Len(fichier) = 1 Then

'Ensuite je détermine le nombre de ligne que j'ai dans ma colonne A de la feuille 2
  Dim dern_ligne As String
  dern_ligne = (Range("A65536").End(xlUp).Row)
  
 Range("A1").Select

'Je crée le nombre d'onglets correspondant au nombre de ligne et je les renomme

  For Ctr = 1 To dern_ligne
    Sheets.Add , Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = Tableau(Ctr)
  Next

'ouvre le fichier actuel à importer
Set wbsource = Workbooks.Open(FichierAExtraire)

'sélectionne la feuille de données à importer
'for (s'il y a écrit 'XXX' dans la 1er ligne de la 1er colonne)
Set wksNewSheet = wbsource.Sheets("sheet1")
'for (s'il y a écrit 'YYY' dans la 1er ligne de la 1er colonne)
Set wksNewSheet = wbsource.Sheets("sheet2")
'for (s'il y a écrit 'AAA' dans la 1er ligne de la 1er colonne)
Set wksNewSheet = wbsource.Sheets("sheet3")



'active cette feuille
wksNewSheet.Activate
wksNewSheet.Select

'selection des données que l'on veut importer
Range(Cells(1, 1), Cells(17, 17)).Select

'copie les données sélectionnées
Selection.Copy

'retourne vers le fichier de départ
wbdest.Activate

'compte le nombre de lignes déjà utilisées dans ce fichier
i = ActiveSheet.UsedRange.Rows.Count

'sélection de la cellule où on veut coller les données (la première vide)
Cells(i + 1, 1).Select

'colle les données
ActiveSheet.Paste

'ferme le fichier source
wbsource.Close

'va vers la ligne suivante à importer
fichier = Dir

'recommece la boucle avec la ligne suivante
Loop
wbdest.Activate

End Sub




        
If Len(fichier) = 0 Then
       MsgBox (" Veuillez d'abord selectionner un fichier ")
    Else
        Call Fichier_sortie
        MsgBox "Le fichier : " & fichier_FORMATE & " va être créé " & _
        "dans le repertoire : " & repertoire
        'mise en forme du fichier de sortie
        Call Mise_en_forme
        fichier = ""
        TxtFichier.Text = ""
        'impression en PDF
        'Call MISE_EN_PAGE_IMPRESSION_PDF
            'ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
        ActiveWorkbook.PrintOut Copies:=1, ActivePrinter:= _
        "PDFCreator", Collate:=True


'Je supprime tous les onglets précédant

On Error Resume Next
  For Ctr = Sheets.Count To 1 Step -1
    If Sheets(Ctr).Name <> ActiveSheet.Name Then
    SendKeys ("{ENTER}")
    Sheets(Ctr).Delete
    End If
  Next



    End If
End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 avril 2013 à 09:23
1)
J'ai cherché et lu beaucoup de forum mais aucun cas identique

Pour trouver un "cas identique", il faudrait que le Web expose des milliard de codes écrits !!!! Le développement, ce n'est pas la recherche et la copie d'un "cas identique", mais la "construction" petrsonnelle d'une solution adaptée à un cas !
2) que sont les lignes venant après le 1er end sub et se terminant par un second end sub . Doc totalement hors procédure !!!
Tu ferais mieux d'exposer techniquement et très clairement les tenants et aboutissants de ton problème. Car ce n'est pour moi pas très clair ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Oui je comprend et je vous assure que j'essaye.
D'accord je vais essayer d'être plus claire. Alors:
- j'ai un fichier Excel nommé MV9299400100400-A.xsl
- Sur celui ci je veux lire la 2ème et 3eme page contenant les lignes qui m'interesse.
- Suivant ce qu'il y a inscrit dans chaque ligne (XXX-YYY-ZZZ...) je veux extraire le tableau correspondant.
- Ces différents tableau se trouvent dans différentes feuille (chacune renomé selon a quoi il correspond dans la ligne) du fichier nommé "FichierAExtraire"

Je voudrais que la macro lise les lignes de la 2eme et 3 eme page et crée un nouveau fichier excel dans lequel il y aurait une page par ligne avec le tableau correspondant.

Et une fois ces pages créées, je fais la mise en page pour extraire un PDF ou word pour l'impression des tableaux.

C'est un peu plus clair.? je ne vois pas ou je peux vous poser mes fichier pour que vous comprenniez mieux..

Cdlt.
Merci d'essayer de m'aider.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 avril 2013 à 10:45
Toujours ni technique, ni clair !
On y va par étapes ===>>
1)
Sur celui ci je veux lire la 2ème et 3eme page contenant les lignes qui m'interesse

- C'est quoi, une "page" ???
- Dans quelle colonne, ce qui "t'intéresse" ? Et de quelle ligne à quelle ligne ?
2) -
Suivant ce qu'il y a inscrit dans chaque ligne (XXX-YYY-ZZZ...) je veux extraire le tableau correspondant
.
- C'est quoi, exactement, le "tableau correspondant" ?
- qu'y a-t'il écrit exactement (un exemple) dans la ligne (ton "XXX-YYY-ZZZ...") ????
3)
- Ces différents tableau se trouvent dans différentes feuille (chacune renomé selon a quoi il correspond dans la ligne) du fichier nommé "FichierAExtraire"

et l'ambiguïté continue avec les mots "tableau" et "feuille" et le mot "dans"
qui pourrait donner à penser qu'un "tableau" n'est qu'une partie d'une feuille dans laquelle il se trouve !
Pourquoi t'est-il si difficile d'exposer clairement et techniquement les choses ??? Ce n'est pas clair dans ton esprit ou quoi ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Si pourtant c'est clair mais exprimer techniquement je n'y arrive pas trop..

Alors 1)
Mon fichier Excel contient 7 feuilles (onglets) mais je ne me servirai que du deuxieme et troisieme.
"Ce qui m'intéresse" est dans la colonne A de ces deux onglets, et le nombre de lignes est aléatoire.

2)
J'ai créé un excel avec tout les différents tableaux qui peuvent etre demandé, mis en page comme il faut, toutes les sortes sont dans un Excel "fichierAExtraire" avec dans chaque onglet différent un tableau différent.
Par exemple la première colonne peut ressembler a ca :
2441VC255
2441VC257
2441VC251
2441VC253
2441VC259
2441VC261
2441VC265
2441VC263
7JY1_A
4171VN
141HH_A
4215VC
4213VC
4211VC
4217VC
4219VC
214HF_A
220HF_A
4161VC_A
229HF_A
4011VC
4013VC


Si tu veux je peux t'envoyer tout les fichiers dont je parle par mail pour que tu comprennes mieux, je sais que je m'exprime assez mal..
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 avril 2013 à 11:11
N'envoies pas de fichiers (que seuls les moins prudents ouvriraient) !

Contente-toi de répondre avec précision et clarté aux questions pourtant simples que je t'ai posées ! Une par une et sans t'égarer autrement.
Si tu n'en es pas capable, je te laisse tomber.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Je comprend pas pourquoi vous me répondez avec tant d'animosité.
J'ai répondu a chaque question posées.

Je sais que je n'y arrive pas mais je ne crois pas mériter tout de même de telle réponse.
Je pense avoir été correcte dans tout mes messages envoyés, si vous ne voulez pas m'aider, ne m'aidez pas mais soyez correct, je suis une personne.

Cordialement.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 avril 2013 à 11:53
Ma réponse n'est pas une "animosité". Elle est tout simplement celle de l'incapacité de t'aider à résoudre ce qui n'est pas exposé très techniquement et clairement. Voilà tout ...
Attends alors que passe quelqu'un dont la boule de cristal n'est pas en panne.
Bonne chance


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Rejoignez-nous