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 :

Generer Par [vba-e]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut Generer Par [vba-e]
    Bonjour à tous j'aimerais savoir si quelqu'un connait si par vba on pourrait d'après un fichier excel récupérer les données de ce dernier afin de les mettre sous forme de requêtes sql dans un fichier word merci d'avance pour l'aide que vous m'apporterez

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Comme qqch dans ce genre ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    Merci pour votre réponse Oui c'est ca exactement sauf que mon fichier a plusieurs feuilles et je ne s'est pas du tout comment je pourrais procéder?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    Bonjour je suis dans un fichier excel et j'aimerais pouvoir en vba créer un fichier word dans lequel à partir des données des cellules pouvoir les récupérer et les mettre dans ce genre de phrase insert into et values voilà ce que j'ai tenté mais cela ne fonctionne 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
     
    .... 
    Dim PASCAL As Excel.Sheets 
    Dim wordApp As Word.Application 
    Dim wordDoc As Word.Document 
    Dim VM_Vendeur As String 
    Dim VM_Mois As String 
    Dim VM_Jour As String 
    Dim VM_NbVehicules As String 
    Dim VM_NbServices As String 
     
     
     
    Set wordApp = CreateObject("WordApplication") 
    wordApp.Documents.Add.Path 
    Worksheets("PASCAL").Select 
    wordApp.Selection.typetext "INSERT INTO ventemensuelle (VM_Vendeur, VM_Mois, VM_Jour, VM_NbVehicules, VM_NbServices) VALUES (" & Cells(3, 2).Value & Cells(4, 7).Value & "30" & Cells(18, 7).Value & Cells(20, 7) & ")" & vbCrLf 
     
    End Sub

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Enfin tu nous montres ton code... Par contre tu ne dis pas ou se situe le blocage. M'enfin bon...
    Tu n'as pas bien du lire l'exemple (l'autre topic)...
    Citation Envoyé par LAETIAZ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim wordApp As Word.Application 
    Dim wordDoc As Word.Document 
     
    Set wordApp = CreateObject("WordApplication") 
    wordApp.Documents.Add.Path 
    Worksheets("PASCAL").Select 
    wordApp.Selection.typetext "INSERT ..."
    1/ Si tu déclares Word.Application (avec la référence Microsoft Word x.x Object Library), tu n'as pas besoin d'un CreateObject, il suffit de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Dim wordApp As Word.Application
        Set wordApp = New Word.Application ' Crée une nouvelle instance de Word
        wordApp.visible = True ' Sinon tu ne verras pas ton appli Word
        '(...)
        wordApp.Quit
        Set wordApp = Nothing
    De toute facon la syntaxe exacte est : CreateObject("Word.Application") (avec un ".")
    2/ wordApp.Documents.Add.Path n'est pas du tout correct. Il suffit de regarder l'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set WordDoc = WordApp.Documents.Add
    Avec ca, ça devrait tourner.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    En fait cela me met une erreur ici: Dim wordApp As Word.Application (type défini par l'utilisateur non défini)

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Il faut déclarer la référence : "Microsoft Word x.x Object Library"
    Outils > Référence...

    Ou alors, tu t'en passes et tu utilises des CreateObject :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim wordApp, wordDoc
    Set wordApp = CreateObject("Word.Application")
    Mais tu n'auras pas l'aide intuitive de VBA, qui t'affichera en liste déroulante les propriétés et méthodes de tes objets Word...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    Voilà ce que j'ai fait et ca ne marche toujours 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
     
    Dim VM_Vendeur As String
    Dim VM_Mois As String
    Dim VM_Jour As String
    Dim VM_NbVehicules As String
    Dim VM_NbServices As String
    Dim wordApp, wordDoc
     
    Set wordApp = CreateObject(Word.Application)
    wordApp.Visible = True
    Set wordDoc = wordApp.Documents.Add
    Worksheets("PASCAL").Select
    wordApp.Selection.typetext "INSERT INTO ventemensuelle (VM_Vendeur, VM_Mois, VM_Jour, VM_NbVehicules, VM_NbServices) VALUES (" & Cells(3, 2).Value & Cells(4, 7).Value & "30" & Cells(18, 7).Value & Cells(20, 7) & ")" & vbCrLf
    wordApp.Quit
    Set wordApp = Nothing
    Merci pour votre aide

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Oup desole, j'ai corrige mon post...
    C'est bien CreateObject("Word.Application") avec des guillemets...
    Il ne faut pas quitter l'application Word sinon on ne verra pas le resultat :
    commenter la ligne :

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    Merci beaucoup ceci marche mais pour récupérer les données ca coince est ce que ceci est correct:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("PASCAL").Select 
    wordApp.Selection.typetext "INSERT INTO ventemensuelle (VM_Vendeur, VM_Mois, VM_Jour, VM_NbVehicules, VM_NbServices) VALUES (" & Cells(3, 2).Value & Cells(4, 7).Value & "30" & Cells(18, 7).Value & Cells(20, 7) & ")" & vbCrLf

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Je suppose qu'il faut rajouter des ",".
    Pour optimiser, on peut également eviter les select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim f as WorkSheet
    Set f = Worksheets("PASCAL")
    wordApp.Selection.typetext "INSERT INTO ventemensuelle (VM_Vendeur, VM_Mois, VM_Jour, VM_NbVehicules, VM_NbServices) VALUES (" & f.Cells(3, 2).Value & "," & f.Cells(4, 7).Value & ",30," & f.Cells(18, 7).Value & "," & f.Cells(20, 7) & ")" & vbCrLf
    Cela dépend bien sur du type des donnees dans la table, d'apres le nom des champs je verrai plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim f as WorkSheet
    Set f = Worksheets("PASCAL")
    wordApp.Selection.typetext "INSERT INTO ventemensuelle (VM_Vendeur, VM_Mois, VM_Jour, VM_NbVehicules, VM_NbServices) VALUES ('" & f.Cells(3, 2).Value & "'," & f.Cells(4, 7).Value & ",30," & f.Cells(18, 7).Value & "," & f.Cells(20, 7) & ")" & vbCrLf
    Avec un quote autour du nom du vendeur, en supposant que le mois et le jour sont des entiers déclarés en tant que tels dans la bdd

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    merci comment on pourrait faire pour dire si il y a rien dans cellule alors mettre null

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim f as WorkSheet
    Set f = Worksheets("PASCAL")
    wordApp.Selection.typetext "INSERT INTO ventemensuelle (VM_Vendeur, VM_Mois, VM_Jour, VM_NbVehicules, VM_NbServices) VALUES (" & Iif(Trim(f.Cells(3, 2))="","null","'" & f.Cells(3, 2).Value & "'") & "," & Iif(Trim(f.Cells(4, 7))="", "null", f.Cells(4, 7).Value) & ",30," & Iif(Trim(f.Cells(18, 7))="","null",f.Cells(18, 7).Value) & "," & Iif(Trim(f.Cells(20, 7))="","null",f.Cells(20, 7)) & ")" & vbCrLf

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    Merci beaucoup ca marche super une toute petite dernière question pour une données d'une cellule mis en décimales 2 cela ne le prend pas en compte et me met plein de chiffres après la "," alors que la cellule a pour format de décimales comment pourrais t'on corriger le problème?

  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    C'est par ce que tu utilises la propriété Value de la cellule, c'est à dire la valeur de la cellule et non le texte affiché. Donc il faut remplacer les Cells(3, 2).Value par des Cells(3, 2).Text

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    Merci et comment peut on faire pour mettre entre guillemets car comme ca ca ne marche pas """ et puis comment on fait pour enregistrer le fichier word et lui donner un nom merci encore beaucoup pour votre aide

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    comment faire pour enregistrer le fichier word sous un titre en vba?

  18. #18
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Pour les guillemets, il en faut 4 : "guille""met" te donne guille"met.
    POur l'enregistrement du document :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wordDoc.SaveAs Filename
    Il suffit de regarder dans VBA-Word...

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    merci que puis-je mettre à la place de "passe" si il ne trouve pas le fichier de l'année précèdente car je l'ai déjà utiliser merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DETRUIRE = CDate(MOIS & "/" & ANNEE - 1)
    On Error GoTo passe
    Kill (wordDoc.Path & "\" & "INSERT_" & Format(DETRUIRE, "yyyy") & "_" & Format(DETRUIRE, "mm") & (".xls"))
    Exit Sub
    passe:

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    Merci énormément pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Mise en forme table access par VBA ou SQL
    Par romrai dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/02/2006, 12h29
  2. Mettre une image sur bouton par VBA????
    Par electrosat03 dans le forum IHM
    Réponses: 3
    Dernier message: 17/02/2006, 01h54
  3. Faire une MAJ de recordsetclone par VBA.
    Par electrosat03 dans le forum Access
    Réponses: 4
    Dernier message: 03/02/2006, 17h42
  4. Réponses: 4
    Dernier message: 27/01/2006, 15h28
  5. Imprimer des selections excel en pdf par VBA
    Par ouellet5 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/12/2005, 17h29

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