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

Macros et VBA Excel Discussion :

[VBA-E] Base de donnees routine


Sujet :

Macros et VBA Excel

  1. #21
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bon , alors déjà, là il y a un pb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Do While Sheets("Feuil1").Cells(ligne, 2) <> ""
            ligne = ligne + 1
        Loop
        Cells(ligne, 2).Select
        ActiveSheet.Paste
        Sheets("Sheet1").Cells(ligne, 1) = stNoClient
        Return
    Tu cherches la première ligne vide dans Feuil1 et tu utilises le N° de ligne dans Sheet1
    Tu peux expliquer ?
    A+

  2. #22
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut
    merde, dsl, jme perds un peu avec toutes ces versions d'excel, j'ai un peu bossé sur la francaise et anglaise pour tester ma macro...

    Feuil1 = feuille de regroupement des données
    Sheet1 = feuille des classeurs excel

  3. #23
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour qu'on se comprenne bien,
    1 - Tu colles tes données dans "Feuil1" ?
    2 - Tu places le nom du client dans "Sheet1" ?
    3 - Ces feuilles ne sont pas dans le même classeur ?
    Tu es dur avec moi
    A+

  4. #24
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut
    je suis vraiment pas clair aujourdhui lol.
    Donc on va changer les noms.

    dans le classeur Excel de cconsolidation:
    Regroupement = feuille qui regroupera le code client + les produits commandés sous forme de petite base de données


    Dans tous les classeurs a consolider:
    Export = feuille qui contient les produits commandés
    Client = feuille contenant les données client dont le numéro client (G10)

    Encore merci pour ton aide!

  5. #25
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut

  6. #26
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut
    Dsl, c vrai que pour moi c clair...
    Alors dans le code,

    Export = feuille ou les produits commandés se trouvent en colonne A a partir de la ligne 14
    Client = feuille ou se trouve le code client en G10 (je ne l'ai pas mentionné dans mon code car je n'ai pas trouvé la ligne de commande)

    Sheet1 = Feuille qui récupère les données de Export et Client
    Dis moi si je nesuis pas clair
    d'avance merci

  7. #27
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bon, je corrige le code en conséquence. Dans le tien, NomClient et données étaient dans deux feuilles séparées, CE QUE JE NE COMPRENAIS PAS
    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
    Option Explicit
    Sub Baseb()
    Dim Monfichier, PremLigneVideFeuil1 As Long, PremLigneVideFeuil1Sheet1 As Long
    Application.ScreenUpdating = False
    Dim stNoClient As String
        Monfichier = Dir("C:\Test\*.xls", vbReadOnly)
        While Monfichier <> ""
            'Recherche de la 1ère ligne vide dans la feuille où on COLLE
            PremLigneVideFeuil1 = ThisWorkbook.Sheets("Sheet1").Range("A65535").End(xlUp).Row + 1
            'Ouverture du fichier où on copie les données trouvées
            Workbooks.Open "c:\test\" & Monfichier
            Sheets("D1").Activate
            stNoClient = Sheets("Client").Range("G10")
    'On copie 'on est dans Sheets("Export")
            Worksheets("Export").Range(Cells(14, 1), Cells(Range("A14").End(xlDown).Row, 1)).Copy
    'on colle dans Feuil1 de "thisworkbook" : Classeur contenant les macros
            ThisWorkbook.Sheets("Sheet1").Activate
            Cells(PremLigneVideFeuil1, 2).Select
            ActiveSheet.Paste
    'On place dans Sheet1 "thisworkbook" le nom du client ???????
            ThisWorkbook.Sheets("Sheet1").Cells(PremLigneVideFeuil1, 1) = stNoClient
    'Fermeture de Monfichier
            'Workbooks(Monfichier).Close False
            Monfichier = Dir()
        Wend
    End Sub
    Tu dis
    A+

  8. #28
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut
    Pour que tout soit plus clair, je t'ai joint un exemple.

    Le fichier "Regroupement" est celui qui doit servir a tout consolider en base de données

    Le fichier "Données" est un exemple de fichier que j'aimerais consolider. J'en ai plusieurs présents dans un dossier. Les données se trouvent au mm endroit dans chaque fichier.

    En fait, l'idée c'est koi:

    Un client commande plus ou moins de produits dans la feuille Export (il peut en commander 1 comme plusieurs = dans ce cas, il y aura plus ou moins de lignes)

    Cependant, dans le fichier Regroupement, j'aimerais qu'a chaque nom de produit commandé que l'on a rapatrié, indiquer en face le numéro du client concerné.

    Tout ce que j'ai réussi (c sur ke c pas le top de la programmation) a faire pour le moment, c'est rapatrier les noms de produits commandés. Je suis bloqué pour coller le numéro du client en face de chaque produit commandé.
    Fichiers attachés Fichiers attachés

  9. #29
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut
    j'ai essayé d'avancer avec la macro que tu as modifié, cependant, le code client ne se colle pas bien.

    Je n'arrive pas a affecter le code client correspondant aux noms des produits commandés

  10. #30
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    J'espère que tu ne t'es pas impatienté, je m'étais absenté
    J'ai ouvert tes fichiers et voici le code.
    Dans ton code tu avais une feuille D1... elle est passé où
    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
    Option Explicit
    Sub Base()
    Dim Monfichier, PremLigneVideFeuil1 As Long, PremLigneVideFeuil1Sheet1 As Long
    Application.ScreenUpdating = False
    Dim stNoClient As String
        Monfichier = Dir("C:\Test\*.xls", vbReadOnly)
        While Monfichier <> ""
            'Recherche de la 1ère ligne vide dans la feuille où on COLLE
            PremLigneVideFeuil1 = ThisWorkbook.Sheets("Sheet1").Range("B65535").End(xlUp).Row + 1
            'Ouverture du fichier où on copie les données trouvées
            Workbooks.Open "c:\test\" & Monfichier
            Sheets("Export").Activate
            stNoClient = Sheets("Client").Range("G10")
    'On copie 'on est toujours dans Sheets("D1")
            Range(Cells(14, 1), Cells(Range("A14").End(xlDown).Row, 1)).Copy
    'on colle dans Feuil1 de "thisworkbook" : Classeur contenant les macros
            ThisWorkbook.Sheets("Sheet1").Activate
            Cells(PremLigneVideFeuil1, 2).Select
            ActiveSheet.Paste
    'On place le nom du client dans Sheet1 de "thisworkbook"
            ThisWorkbook.Sheets("Sheet1").Cells(PremLigneVideFeuil1, 1) = stNoClient
    'Fermeture de Monfichier
            'Workbooks(Monfichier).Close False
            Monfichier = Dir()
        Wend
    End Sub
    Ainsi c'est plus adapté
    A+

  11. #31
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut
    Merci bcp Ouskel, ca marche !! Depuis le temps ke j'étais bloqué!

    Juste un dernier truc, j'ai testé avec ta macro, le code client apparait en face du premier produit kil a commandé, mais en face de toutes les lignes.

    Je vais y aller a la barbare, c'est à dire faire une macro qui sélectionne la colonne A > F5 > Cellules vides > = cellule du dessus.

    Si tu as une meilleure idée, n'hésite pas, enttk, encore merci pour ton aide!

  12. #32
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Non, je n'ai pas ce phénomène.
    Efface toutes les données dans ton fichier regroupement et relance ta macro
    Tu dis
    A+

  13. #33
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut
    j'ai réessayé, et j'ai toujours ce pb.... De tte facon, c pas très grave, je sais comment faire maintenant pour empecher ce phénomene

  14. #34
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Mon code ne fait pas "ça", en fait, il ne peut pas faire ça, tu es sûr de n'avoir rien changé ?
    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/02/2014, 04h13
  2. [VBA] Gérer les erreurs d'insertion dans la base de données
    Par robert_trudel dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/12/2006, 12h45
  3. Creation d'une base de donnees en TXT [VBA-E]
    Par Adri1l dans le forum Excel
    Réponses: 1
    Dernier message: 08/08/2006, 16h06
  4. [VBA] Compacter base de donnée
    Par BaRonm3 dans le forum Access
    Réponses: 9
    Dernier message: 27/06/2006, 14h26
  5. taille maximale d'une base de donnée paradox
    Par Anonymous dans le forum Paradox
    Réponses: 5
    Dernier message: 14/02/2004, 17h39

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