Problème vba exportation données sur word

Résolu
IvyJu Messages postés 17 Date d'inscription lundi 20 janvier 2020 Statut Membre Dernière intervention 9 septembre 2024 - Modifié le 8 sept. 2024 à 11:24
IvyJu Messages postés 17 Date d'inscription lundi 20 janvier 2020 Statut Membre Dernière intervention 9 septembre 2024 - 9 sept. 2024 à 02:30

Bonjour,

J'ai un problème avec mon code VBA. J'ai un formulaire dans lequel je peux inscrire des entrées, rechercher des lignes et j'aimerais le faire exporter sur un document Word. j'ai conçu un modèle avec tous les signets, mais j'ai à chaque fois un problème.

Pouvez-vous m'aider?

Je vous mets le code concernant l'exportation.

Private Sub cmd_exporter_Click()
    Dim wordApp As Object
    Dim doc As Object
    Dim templatePath As String
    Dim filePath As String
    Dim bm As Object
    Dim bookmarkNames As Variant
    Dim i As Integer
    
    On Error GoTo ErrorHandler
    
    ' Créer une instance de Word
    Set wordApp = CreateObject("Word.Application")
    
    ' Chemin du modèle de document Word
    templatePath = "C:\Users\julie\Desktop\modele_CDD_final2.dotm"
    
    ' Vérifier l'existence du fichier modèle
    If Dir(templatePath) = "" Then
        MsgBox "Le fichier modèle n'existe pas à l'emplacement spécifié : " & templatePath, vbExclamation
        Exit Sub
    End If
    
    ' Ouvrir le modèle
    Set doc = wordApp.Documents.Open(templatePath)
    
    ' Définir le chemin et le nom du fichier
    filePath = "C:\Users\julie\Desktop\contrat_cdd_" & Me.nom_employe.Value & "_" & Me.nom_entreprise.Value & ".docm"
    
    ' Tableau des signets et des valeurs à insérer
    bookmarkNames = Array("nom_entreprise", "type_entreprise", "nom_entreprise1", "type_entreprise1", "num_rue_entreprise", "rue_entreprise", _
                          "npa_entreprise", "ville_entreprise", "siret", "ape", "immat_employeur", "nom_urssaf", "titre_representant", _
                          "nom_representant", "prenom_representant", "titre_representant2", "nom_representant2", "prenom_representant2", _
                          "role_representant", "titre_employe", "nom_employe", "prenom_employe", "titre_employe1", "nom_employe1", _
                          "prenom_employe1", "titre_employe2", "nom_employe2", "prenom_employe2", "titre_employe3", "nom_employ3e", _
                          "prenom_employe3", "titre_employe4", "nom_employe4", "prenom_employe4", "titre_employe5", "nom_employe5", _
                          "prenom_employe5", "titre_employe6", "nom_employe6", "prenom_employe6", "titre_employe7", "nom_employe7", _
                          "prenom_employe7", "titre_employe8", "nom_employe8", "prenom_employe8", "titre_employe9", "nom_employe9", _
                          "prenom_employe9", "titre_employe0", "nom_employe0", "prenom_employe0", "titre_employe11", "nom_employe11", _
                          "prenom_employe11", "titre_employe12", "nom_employe12", "prenom_employe12", "num_rue_employe", "rue_employe", _
                          "npa_employe", "ville_employe", "date_naissance", "ville_naissance", "pays_naissance", "dep_naissance", _
                          "nationalite", "num_secu", "intitule_poste", "niveau_poste", "coefficient", "cadre_ou_non", "date_debut", _
                          "date_fin", "periode_essai", "debut_essai", "fin_essai", "nombre_heures", "mois_ou_semaine", "salaire", _
                          "par_mois_semaine", "lieu_contrat", "date_contrat", "convention", "date_convention", "idcc", "num_brochure", _
                          "nb_heures_mois")
    
    ' Remplir les signets avec les données du formulaire
    With doc
        .Bookmarks("nom_entreprise").Range.Text = Me.nom_entreprise.Value
        .Bookmarks("type_entreprise").Range.Text = Me.type_entreprise.Value
        .Bookmarks("nom_entreprise1").Range.Text = Me.nom_entreprise.Value
        .Bookmarks("type_entreprise1").Range.Text = Me.type_entreprise.Value
        .Bookmarks("num_rue_entreprise").Range.Text = Me.num_rue_entreprise.Value
        .Bookmarks("rue_entreprise").Range.Text = Me.rue_entreprise.Value
        .Bookmarks("npa_entreprise").Range.Text = Me.npa_entreprise.Value
        .Bookmarks("ville_entreprise").Range.Text = Me.ville_entreprise.Value
        .Bookmarks("siret").Range.Text = Me.siret.Value
        .Bookmarks("ape").Range.Text = Me.ape.Value
        .Bookmarks("immat_employeur").Range.Text = Me.immat_employeur.Value
        .Bookmarks("nom_urssaf").Range.Text = Me.nom_urssaf.Value
        .Bookmarks("titre_representant").Range.Text = Me.titre_representant.Value
        .Bookmarks("nom_representant").Range.Text = Me.nom_representant.Value
        .Bookmarks("prenom_representant").Range.Text = Me.prenom_representant.Value
        .Bookmarks("titre_representant2").Range.Text = Me.titre_representant.Value
        .Bookmarks("nom_representant2").Range.Text = Me.nom_representant.Value
        .Bookmarks("prenom_representant2").Range.Text = Me.prenom_representant.Value
        .Bookmarks("role_representant").Range.Text = Me.role_representant.Value
        .Bookmarks("titre_employe").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employe").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe").Range.Text = Me.prenom_employe.Value
        .Bookmarks("titre_employe1").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employe1").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe1").Range.Text = Me.prenom_employe.Value
        .Bookmarks("titre_employe2").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employe2").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe2").Range.Text = Me.prenom_employe.Value
        .Bookmarks("titre_employe3").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employ3e").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe3").Range.Text = Me.prenom_employe.Value
        .Bookmarks("titre_employe4").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employe4").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe4").Range.Text = Me.prenom_employe.Value
        .Bookmarks("titre_employe5").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employe5").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe5").Range.Text = Me.prenom_employe.Value
        .Bookmarks("titre_employe6").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employe6").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe6").Range.Text = Me.prenom_employe.Value
        .Bookmarks("titre_employe7").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employe7").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe7").Range.Text = Me.prenom_employe.Value
        .Bookmarks("titre_employe8").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employe8").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe8").Range.Text = Me.prenom_employe.Value
        .Bookmarks("titre_employe9").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employe9").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe9").Range.Text = Me.prenom_employe.Value
        .Bookmarks("titre_employe0").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employe0").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe0").Range.Text = Me.prenom_employe.Value
        .Bookmarks("titre_employe11").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employe11").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe11").Range.Text = Me.prenom_employe.Value
        .Bookmarks("titre_employe12").Range.Text = Me.titre_employe.Value
        .Bookmarks("nom_employe12").Range.Text = Me.nom_employe.Value
        .Bookmarks("prenom_employe12").Range.Text = Me.prenom_employe.Value
        .Bookmarks("num_rue_employe").Range.Text = Me.num_rue_employe.Value
        .Bookmarks("rue_employe").Range.Text = Me.rue_employe.Value
        .Bookmarks("npa_employe").Range.Text = Me.npa_employe.Value
        .Bookmarks("ville_employe").Range.Text = Me.ville_employe.Value
        .Bookmarks("date_naissance").Range.Text = Me.date_naissance.Value
        .Bookmarks("ville_naissance").Range.Text = Me.ville_naissance.Value
        .Bookmarks("pays_naissance").Range.Text = Me.pays_naissance.Value
        .Bookmarks("dep_naissance").Range.Text = Me.dep_naissance.Value
        .Bookmarks("nationalite").Range.Text = Me.nationalite.Value
        .Bookmarks("num_secu").Range.Text = Me.num_secu.Value
        .Bookmarks("intitule_poste").Range.Text = Me.intitule_poste.Value
        .Bookmarks("niveau_poste").Range.Text = Me.niveau_poste.Value
        .Bookmarks("coefficient").Range.Text = Me.coefficient.Value
        .Bookmarks("cadre_ou_non").Range.Text = Me.cadre_ou_non.Value
        .Bookmarks("date_debut").Range.Text = Me.date_debut.Value
        .Bookmarks("date_fin").Range.Text = Me.date_fin.Value
        .Bookmarks("periode_essai").Range.Text = Me.periode_essai.Value
        .Bookmarks("debut_essai").Range.Text = Me.debut_essai.Value
        .Bookmarks("fin_essai").Range.Text = Me.fin_essai.Value
        .Bookmarks("nombre_heures").Range.Text = Me.nombre_heures.Value
        .Bookmarks("mois_ou_semaine").Range.Text = Me.mois_ou_semaine.Value
        .Bookmarks("salaire").Range.Text = Me.salaire.Value
        .Bookmarks("par_mois_semaine").Range.Text = Me.par_mois_semaine.Value
        .Bookmarks("lieu_contrat").Range.Text = Me.lieu_contrat.Value
        .Bookmarks("date_contrat").Range.Text = Me.date_contrat.Value
        .Bookmarks("convention").Range.Text = Me.convention.Value
        .Bookmarks("date_convention").Range.Text = Me.date_convention.Value
        .Bookmarks("idcc").Range.Text = Me.idcc.Value
        .Bookmarks("num_brochure").Range.Text = Me.num_brochure.Value
        .Bookmarks("nb_heures_mois").Range.Text = Me.nb_heures_mois.Value
    End With
    

    
    ' Enregistrer le document
    doc.SaveAs2 filePath
    doc.Close SaveChanges:=False
    wordApp.Quit
    
    ' Libérer les objets
    Set doc = Nothing
    Set wordApp = Nothing
    
    ' Message de confirmation
    MsgBox "Le document Word a été créé avec succès.", vbInformation
    
    Exit Sub
    
ErrorHandler:
    ' Gestion des erreurs
    MsgBox "Erreur lors de l'ouverture du modèle Word : " & Err.Description, vbExclamation
    
    ' Assurez-vous que les objets Word sont fermés en cas d'erreur
    If Not doc Is Nothing Then
        doc.Close SaveChanges:=False
        Set doc = Nothing
    End If
    
    If Not wordApp Is Nothing Then
        wordApp.Quit
        Set wordApp = Nothing
    End If
End Sub

Function GetBookmarkValue(bookmarkName As String) As String
    Select Case bookmarkName
        Case "nom_entreprise", "nom_entreprise1", "nom_employe", "nom_employe1", "nom_employe2", "nom_employe3", "nom_employe4", "nom_employe5", "nom_employe6", "nom_employe7", "nom_employe8", "nom_employe9", "nom_employe0", "nom_employe11", "nom_employe12"
            GetBookmarkValue = CStr(Me.nom_employe.Value)
        Case "type_entreprise", "type_entreprise1"
            GetBookmarkValue = CStr(Me.type_entreprise.Value)
        Case "num_rue_entreprise"
            GetBookmarkValue = CStr(Me.num_rue_entreprise.Value)
        Case "rue_entreprise"
            GetBookmarkValue = CStr(Me.rue_entreprise.Value)
        Case "npa_entreprise"
            GetBookmarkValue = CStr(Me.npa_entreprise.Value)
        Case "ville_entreprise"
            GetBookmarkValue = CStr(Me.ville_entreprise.Value)
        Case "siret"
            GetBookmarkValue = CStr(Me.siret.Value)
        Case "ape"
            GetBookmarkValue = CStr(Me.ape.Value)
        Case "immat_employeur"
            GetBookmarkValue = CStr(Me.immat_employeur.Value)
        Case "nom_urssaf"
            GetBookmarkValue = CStr(Me.nom_urssaf.Value)
        Case "titre_representant", "titre_representant2"
            GetBookmarkValue = CStr(Me.titre_representant.Value)
        Case "nom_representant", "nom_representant2"
            GetBookmarkValue = CStr(Me.nom_representant.Value)
        Case "prenom_representant", "prenom_representant2"
            GetBookmarkValue = CStr(Me.prenom_representant.Value)
        Case "role_representant"
            GetBookmarkValue = CStr(Me.role_representant.Value)
        Case "titre_employe", "titre_employe1", "titre_employe2", "titre_employe3", "titre_employe4", "titre_employe5", "titre_employe6", "titre_employe7", "titre_employe8", "titre_employe9", "titre_employe0", "titre_employe11", "titre_employe12"
            GetBookmarkValue = CStr(Me.titre_employe.Value)
        Case "prenom_employe", "prenom_employe1", "prenom_employe2", "prenom_employe3", "prenom_employe4", "prenom_employe5", "prenom_employe6", "prenom_employe7", "prenom_employe8", "prenom_employe9", "prenom_employe0", "prenom_employe11", "prenom_employe12"
            GetBookmarkValue = CStr(Me.prenom_employe.Value)
        Case "num_rue_employe"
            GetBookmarkValue = CStr(Me.num_rue_employe.Value)
        Case "rue_employe"
            GetBookmarkValue = CStr(Me.rue_employe.Value)
        Case "npa_employe"
            GetBookmarkValue = CStr(Me.npa_employe.Value)
        Case "ville_employe"
            GetBookmarkValue = CStr(Me.ville_employe.Value)
        Case "date_naissance"
            GetBookmarkValue = CStr(Me.date_naissance.Value)
        Case "ville_naissance"
            GetBookmarkValue = CStr(Me.ville_naissance.Value)
        Case "pays_naissance"
            GetBookmarkValue = CStr(Me.pays_naissance.Value)
        Case "dep_naissance"
            GetBookmarkValue = CStr(Me.dep_naissance.Value)
        Case "nationalite"
            GetBookmarkValue = CStr(Me.nationalite.Value)
        Case "num_secu"
            GetBookmarkValue = CStr(Me.num_secu.Value)
        Case "intitule_poste"
            GetBookmarkValue = CStr(Me.intitule_poste.Value)
        Case "niveau_poste"
            GetBookmarkValue = CStr(Me.niveau_poste.Value)
        Case "coefficient"
            GetBookmarkValue = CStr(Me.coefficient.Value)
        Case "cadre_ou_non"
            GetBookmarkValue = CStr(Me.cadre_ou_non.Value)
        Case "date_debut"
            GetBookmarkValue = CStr(Me.date_debut.Value)
        Case "date_fin"
            GetBookmarkValue = CStr(Me.date_fin.Value)
        Case "periode_essai"
            GetBookmarkValue = CStr(Me.periode_essai.Value)
        Case "debut_essai"
            GetBookmarkValue = CStr(Me.debut_essai.Value)
        Case "fin_essai"
            GetBookmarkValue = CStr(Me.fin_essai.Value)
        Case "nombre_heures"
            GetBookmarkValue = CStr(Me.nombre_heures.Value)
        Case "mois_ou_semaine"
            GetBookmarkValue = CStr(Me.mois_ou_semaine.Value)
        Case "salaire"
            GetBookmarkValue = CStr(Me.salaire.Value)
        Case "par_mois_semaine"
            GetBookmarkValue = CStr(Me.par_mois_semaine.Value)
        Case "lieu_contrat"
            GetBookmarkValue = CStr(Me.lieu_contrat.Value)
        Case "date_contrat"
            GetBookmarkValue = CStr(Me.date_contrat.Value)
        Case "convention"
            GetBookmarkValue = CStr(Me.convention.Value)
        Case "date_convention"
            GetBookmarkValue = CStr(Me.date_convention.Value)
        Case "idcc"
            GetBookmarkValue = CStr(Me.idcc.Value)
        Case "num_brochure"
            GetBookmarkValue = CStr(Me.num_brochure.Value)
        Case "nb_heures_mois"
            GetBookmarkValue = CStr(Me.nb_heures_mois.Value)
        Case Else
            GetBookmarkValue = "" ' Valeur par défaut si le nom du signet ne correspond à aucun cas
    End Select
End Function

Je ne sais plus comment m'en sortir .... tout le reste fonctionne à merveille !

Merci d'avance pour votre aide :)

Bonne journée !

A voir également:

2 réponses

yg_be Messages postés 23170 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 septembre 2024 1 532
8 sept. 2024 à 20:35

bonjour, la première chose à faire, c'est de retirer le "on error".  Cela te cache le problème.

Ensuite, expliquer quel est le problème.

Dans quel logiciel tourne ce code VBA?

Tu pourrais, pour decouvrir où est l'erreur, énormément simplifier ce code, ce qui te permettrait de déterminer quelle partie crée le souci.

0
IvyJu Messages postés 17 Date d'inscription lundi 20 janvier 2020 Statut Membre Dernière intervention 9 septembre 2024
9 sept. 2024 à 02:30

Merciiii finalement j'ai réussi et je suis trop contente ! C'est sur Excel que je fais ça.

0