IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Fusion de deux feuilles Excel


Sujet :

Access

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut Fusion de deux feuilles Excel
    bonjour à tous !

    Vous commencez à me connaître maintenant avec mes problèmes !

    Je travaille sur Access 97 et Excel 2000. J'ai une table avec une dizaine de champs, un formulaire de saisie qui me permet d'entrer de nouveaux enregistrements dans ma base de données. J'ai une macro qui appelle 2 requetes, chacune appliquant un filtre que j'ai crée afin de trier ma bdd et d'exporter ces résultats sur deux feuilles excel différentes. Vu que je n'arrive pas à tout mettre directement sur une seule feuille (je ne sais pas si c'est possible ou pas, si oui comment?), je voudrais faire une "fusion" de mes deux feuilles pour les assembler sur une des deux feuilles ou sur une nouvelle, c'est sans importance.

    Voilà, merci d'avance à tous ceux qui m'aideront.

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,
    Si les champs de tes 2 requêtes sont identiques, tu pourrais passer par une requête UNION. Tu exportes alors cette requête union.
    Sinon, il faut que tu fasses un copier-coller des données de ta 2ème feuille sur la 1ère en utilisant l'automation., ensuite tu supprimes ta 2ème feuille.

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    salut Kikof !!

    Merci de t'interesser à mon problème, c'est sympa de ta part.

    Que ce soit pour ta première ou ta deuxième solution, je viens bien suivre tes conseils à conditions que tu m'expliques un petit peu plus en détails la marche à suivre s'il-te-plaît. Merci d'avance.@++

  4. #4
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Pour la 1ère solution : c'est donc l'utilisation d'une requête UNION (ce qui en soit n'est, à mon sens, pas bien expliqué dans l'aide access.) mais il faut impérativement que les champs des 2 requêtes concordent exemple
    Requête 1 :
    NomClient, Adresse, CP, Ville
    Requête 2 :
    NomFournisseur, Adresse, CP, Ville
    pour avoir un listing de tous les "individus" contenus dans la base. (bon ok c'est un exemple bateau... )
    Code SQL de la structure générale d'une requete union : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM requete1
    UNION
    SELECT *
    FROM requete2

    Pour la seconde solution, il faut que tu apprennes par toi même (dans ton intérêt si tu veux progresser).
    les pistes que je vais te donner te permettrons de t'améliorer.
    1) Tu pars du fichier excel que tu obtiens avec tes données sur 2 pages.
    2) Tu effectues les opérations que tu souhaites faire au niveau copier/coller, mise en page etc... en mode enregistrement de macro.
    3) une fois que c'est fait : tu copies ce code dans un module access.
    Seulement le code ne pourra pas être exécuté par access.
    Il faut l'adapter.
    Fait une recherche dans les sources/tutoriels en ce qui concerne le pilotage d'excel par access (appelé automation).
    Tu verras il y a pas grand chose à faire pour l'adapter.

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    merci pour toutes ces pistes Kikof !

    Pour la deuxième solution, tu me dis que sur un même fichier j'ai mes deux feuilles, mais moi j'ai deux fichiers avec une feuille dans chaque. Est-ce que ça change quelque chose ? si oui comment faire pour mettre les deux feuilles dans UN fichier ? Sachant que j'utilise une macro qui est raccroché à un bouton de formulaire.

    De plus, j'avais déjà essayé de récupérer le code VB après un Recording Macro sur Excel dans un module sous Access, en mettant la library appropriée mais lors de la compilation, toutes mes lignes de code été fausses.
    Comment cela ce fait-il ?

  6. #6
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Citation Envoyé par pascal913
    Pour la deuxième solution, tu me dis que sur un même fichier j'ai mes deux feuilles, mais moi j'ai deux fichiers avec une feuille dans chaque. Est-ce que ça change quelque chose ? si oui comment faire pour mettre les deux feuilles dans UN fichier ?
    Ca ne change rien. Tu fais la manipulation manuellement. Vérifie les noms de classeurs lors de la sélection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Windows(Nomfichier).Activate
    (il me semble de mémoire que c'est comme ça)
    De plus, j'avais déjà essayé de récupérer le code VB après un Recording Macro sur Excel dans un module sous Access, en mettant la library appropriée mais lors de la compilation, toutes mes lignes de code été fausses.
    Comment cela ce fait-il ?
    Fais la recherche que je te conseille, compare avec ton code et tu verras ce qu'il manque.
    Deux pistes supplémentaires : regarde la déclaration qui doit être du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim AppExcel As New Excel.Application
    ainsi que le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With AppExcel
    .....
    End With

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    le souci est que j'utilise une macro raccordée à un bouton de formulaire pour automatiser et il faut donc que je mette du code dans un module Access. Je devrai appeler le module depuis ma macro pour l'exécuter mais comme je te l'ai dis, toutes mes lignes de code sont fausses, alors comment faire?

    Merci.

  8. #8
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    tes lignes de codes ne sont pas fausses....
    il faut que tu déclares une instance excel, que tu ouvres les classeurs.
    Tu dois avoir un truc du genre dans la FAQ

  9. #9
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    J'étais exactement sur la page que tu m'as indiqué, j'ai repris les parties de codes qui me sont utiles : déclaration et initialisation de variables puis les parties concernant les copies et coller, sauvegarde et fermeture, mais j’ai toujours des erreurs de partout ! Je me demande bien quelle librairie il faut rajouter ? Ou alors le langage indiqué dans la FAQ est trop récent pour ma version d’Access 97, non ? Là, je ne vois pas du tout. Peut être (sûrement) que mon code est faux mais je suis dans l’incapacité de trouver mes propres erreurs.
    Je dois préciser aussi que, cette opération sera répétée une fois par semaine et qu’il faut absolument conserver les anciens fichiers Excel. Ce qui signifie qu’il faudra chaque semaine changer le nom des fichiers à utiliser. Si ça peut aider… De plus, le nombre de lignes dans les deux feuilles ne sera jamais le même, donc lors du copier-coller, où apparaîtront les lignes ? Seront-elles écrasées par les collées, vu que tout sera fait par l’automation ? Aussi, je ne sais plus si je l’ai dis ou pas, mais j’utilise une macro sous Access qui est raccordée à un bouton de formulaire. En espérant que ce sera utile.
    J’espère que je me suis pas trop mal exprimé.
    Merci.

  10. #10
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Peux tu mettre le code pour voir ce que tu as fait ??
    Au niveau de l'archivage du fichier c'est tout à fait possible. Tu as plusieurs possibilités : soit tu récupères la date du jour, soit le numéro de semaine + l'année de la date du jour. (il y a un topic qui date du début de semaine sur le numéro de semaine.)

    Pour la différence de ligne regarde l'aide sur CurrentRegion, Offset etc...
    Exemple de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set tbl = .ActiveCell.CurrentRegion ' Défini le tableau
            ' Sélectionne l'entête du tableau et met en forme
            tbl.Offset(0, 0).Resize(1, tbl.Columns.Count).Select

  11. #11
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    Voici ce que j'ai fais, j'espère que ça ne te fera pas trop rire .....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Private Sub status()
        Dim xlApp As Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
        Dim i As Long
        Dim vtemp As Variant
        'déclaration de variables
     
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Open("\\pc0682\Lab\Pascal Stagiaire\EnCours\Feuille.xls")
        'inititalisation des variables
     
        Set xlSheet = xlBook.Worksheets.Add
        xlSheet.Name = "Table date1000"
        'Ajouter une feuille de calcul nommée Table date1000
     
        xlSheet.Range("A" & vtemp & ":P" & vtemp).Copy
        'Copier une plage
     
        xlSheet.Paste Destination:=xlSheet.Range("A100:P100")
        'Coller les valeurs
     
        xlBook.Save
        xlApp.Quit
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
        'Code de fermeture
        MsgBox "Fin de la procédure."
        End Sub

  12. #12
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    t'inquiète je ne rie pas.
    par contre tu as oublié d'initialiser vtemp.

  13. #13
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    c'est tout ce qui a à changer?
    C'est pas possible ?
    Comment fait on pour initialiser vtemp ?

    Merci

  14. #14
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    c'est tout ce qui a à changer?
    Pour le moment c'est la seule erreur qui saute aux yeux
    C'est pas possible ?
    cf réponse du dessus
    Comment fait on pour initialiser vtemp ?
    Du genre

  15. #15
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    salut Kikof !

    Code :
    vtemp = "Toto"

    Toto représente quoi ici ? un nom de fichier ? si oui, est-il déjà écrit dans le code ?

    Merci

  16. #16
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    toto est une chaine bateau utilisée en programmation lors de tests ou exemples.
    Tu la remplaces par ce qu'elle doit contenir. Dans ton cas ça m'a l'air d'être un numérique entier. (référence à une cellule)

    Donc ta déclaration doit être :

  17. #17
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    merci pour ton aide Kikof mais ca ne me change pas mon erreur, erreur 1004 avec la ligne surlignée en jaune où je dois écrire l'emplacement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xlBook = xlApp.Workbooks.Open("\\pc0682\Lab\Pascal\Stagiaire\EnCours\Feuille.xls")
    pourquoi ?

  18. #18
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Que dit le message d'erreur ?
    As tu essayé avec un autre chemin plus simple du genre C:\.... ?

  19. #19
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    oui j'ai déjà essayé avec un autre disque mais le résultat est le même.
    Voici le message d'erreur :

    Run-time error '1004'

    ''\\pc0682\Lab\Pascal Stagiaire\EnCours\Feuille.xls'' could not be found. Check the spelling of the file name, and verify that the file location is correct.
    If you are trying to open the file from your list of most recently used files on the File menu, make sure that the file has not been renamed, moved or deleted.

    Voilà.

  20. #20
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Ok,
    le problème est "simple".
    Tu ne peux accéder au fichier parce que soit :
    1. le fichier n'existe pas
    2. le nom n'est pas bon
    3. le fichier a été renommé
    4. le fichier a été déplacé
    5. le fichier a été supprimé.

    Regarde tous ces points pour savoir où se situe le problème.
    Regarde dans la FAQ, il y a un code pour tester l'existance du fichier.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/04/2013, 12h15
  2. fusion de deux fichiers excel
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/07/2007, 16h06
  3. Update entre deux feuilles excel
    Par foxer98 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/07/2007, 12h25
  4. fusion de deux fichiers EXCEL dans un 3ième
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/07/2007, 18h59
  5. Ecrire des données dans deux feuilles excel
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 28/02/2007, 08h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo