Erreur d'exécution '-2147024809 (80070057)

Bonjour

Il y a deux ans on m'a donné quelque cours de VBA sous Excel pour m'apprendre à automatiser mon travail. Bien entendu, n'ayant pas trop le temps je n'ai pas pu mettre en pratique ce que j'ai appris.

Je me suis lancé un pari fou de faire en VBA la gestion des ordre de mission et des états de frais des agents de ma structure. Donc j'ai saisi mon code et je rencontre un souci sur mes formulaires lorsque je valide celui-ci : "Erreur d'exécution '-2147024809 (80070057)': Objet spécifié". J'ai essayé de comprendre mais je trouve pas

Si vous pouvez m'aider, ça sera super gentil

Au passage si vous avez des conseils quant à mon code pour l'améliorer je suis preneuse

Merci d'avance

Option Explicit

Private Sub CommandButton1_Click()

    Dim Plage As Range
    Dim Tbl
    Dim i As Integer
    Dim tailleTableau As Integer
    Dim ligne_a_editer As Integer
    Dim pict As Shape
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim j As Byte
    Dim Cell As Range

    'crée un tableau contenant les noms des contrôles où récuperer les valeurs
    Tbl = Array("TextBoxcontrat", "TextBoxrefciril", "TextBoxmotif", "TextBoxdeno", "TextBoxNom", "TextBoxPrenom", "TextBoxGrade", "TextBoxaddadm", "ComboBoxPays", "TextBoxVille", "TextBoxddep", "TextBoxhdep", "TextBoxdret", "TextBoxhret", "TextBoxObs", "TextBoxNPrem", "TextBoxGest", "TextBoxEmail")

    ' On recupere la taille du tableau
    tailleTableau = UBound(Tbl) + 1

    'défini la plage en feuille Missions
    With Worksheets("Missions")
        'plage de A3 à Sx. Les cellules sont sensées être toutes renseignées
        Set Plage = .Range(.Cells(3, 1), .Cells(.Rows.count, tailleTableau).End(xlUp))

    End With

    'décale d'une ligne
    ligne_a_editer = Plage.Rows.count + 1

    With Plage.Rows(ligne_a_editer)

        'boucle pour inscription des valeurs
        For i = 1 To tailleTableau

        .Cells(1, i + 1).Value = Me.Controls(Tbl(i - 1)).Text

        Next i

    End With

    'Ouverture systématique de la page Missions
    Sheets("Missions").Select

    export_donnees_dans_signet_word ligne_a_editer

    End Sub

Private Sub CommandButton2_Click()

  blnCancel = True
  Me.Hide

End Sub

Private Sub Label18_Click()

End Sub

Private Sub UserForm_Initialize()

 'Pays
     With ListBoxPays

        .AddItem "France"
        .AddItem "_______________"
        .AddItem "Afghanistan"
        .AddItem "Afrique du Sud"
        .AddItem "Albanie"
        .AddItem "Algérie"
        .AddItem "Allemagne"
        .AddItem "Andorre"
        .AddItem "Arabie saoudite"
        .AddItem "Argentine"
        .AddItem "Arménie"
        .AddItem "Australie"
        .AddItem "Autriche"
        .AddItem "Azerbaïdjan"
        .AddItem "Bahamas"
        .AddItem "Bahreïn"
        .AddItem "Bangladesh"
        .AddItem "Barbade"
        .AddItem "Belgique"
        .AddItem "Belize"
        .AddItem "Bénin"
        .AddItem "Biélorussie"
        .AddItem "Birmanie"
        .AddItem "Bolivie"
        .AddItem "Bosnie -Herzégovine"
        .AddItem "Botswana"
        .AddItem "Brésil"
        .AddItem "Bulgarie"
        .AddItem "Burkina Faso"
        .AddItem "Burundi"
        .AddItem "Cambodge"
        .AddItem "Cameroun"
        .AddItem "Canada"
        .AddItem "Centrafrique"
        .AddItem "Chili"
        .AddItem "Chine"
        .AddItem "Chypre"
        .AddItem "Colombie"
        .AddItem "Comores"
        .AddItem "Corée du Nord"
        .AddItem "Corée du Sud"
        .AddItem "Costa Rica"
        .AddItem "Côte d'Ivoire"
        .AddItem "Croatie"
        .AddItem "Cuba"
        .AddItem "Danemark"
        .AddItem "Djibouti"
        .AddItem "Égypte"
        .AddItem "Émirats arabes unis"
        .AddItem "Équateur"
        .AddItem "Érythrée"
        .AddItem "Espagne"
        .AddItem "Estonie"
        .AddItem "États -Unis"
        .AddItem "Éthiopie"
        .AddItem "Fidji"
        .AddItem "Finlande"
        .AddItem "France"
        .AddItem "Gabon"
        .AddItem "Gambie"
        .AddItem "Géorgie"
        .AddItem "Ghana"
        .AddItem "Grèce"
        .AddItem "Guatemala"
        .AddItem "Guinée"
        .AddItem "Guinée équatoriale"
        .AddItem "Guinée -Bissau"
        .AddItem "Guyana"
        .AddItem "Haïti"
        .AddItem "Honduras"
        .AddItem "Hongrie"
        .AddItem "Inde"
        .AddItem "Indonésie"
        .AddItem "Irak"
        .AddItem "Iran"
        .AddItem "Irlande"
        .AddItem "Islande"
        .AddItem "Italie"
        .AddItem "Jamaïque"
        .AddItem "Japon"
        .AddItem "Jordanie"
        .AddItem "Kazakhstan"
        .AddItem "Kenya"
        .AddItem "Kirghizistan"
        .AddItem "Koweït"
        .AddItem "Laos"
        .AddItem "Lettonie"
        .AddItem "Liban"
        .AddItem "Libéria"
        .AddItem "Libye"
        .AddItem "Liechtenstein"
        .AddItem "Lituanie"
        .AddItem "Luxembourg"
        .AddItem "Macédoine"
        .AddItem "Madagascar"
        .AddItem "Malaisie"
        .AddItem "Malawi"
        .AddItem "Maldives"
        .AddItem "Mali"
        .AddItem "Malte"
        .AddItem "Maroc"
        .AddItem "Mauritanie"
        .AddItem "Mexique"
        .AddItem "Moldavie"
        .AddItem "Monaco"
        .AddItem "Mongolie"
        .AddItem "Monténégro"
        .AddItem "Mozambique"
        .AddItem "Népal"
        .AddItem "Nicaragua"
        .AddItem "Niger"
        .AddItem "Nigeria"
        .AddItem "Norvège"
        .AddItem "Nouvelle-Zélande"
        .AddItem "Oman"
        .AddItem "Ouganda"
        .AddItem "Ouzbékistan"
        .AddItem "Pakistan"
        .AddItem "Panama"
        .AddItem "Papouasie-Nouvelle-Guinée"
        .AddItem "Paraguay"
        .AddItem "Pays -Bas"
        .AddItem "Pérou"
        .AddItem "Philippines"
        .AddItem "Pologne"
        .AddItem "Portugal"
        .AddItem "Qatar"
        .AddItem "République démocratique du Congo"
        .AddItem "République dominicaine"
        .AddItem "République tchèque"
        .AddItem "Roumanie"
        .AddItem "Royaume-Uni"
        .AddItem "Russie"
        .AddItem "Rwanda"
        .AddItem "Salvador"
        .AddItem "Samoa"
        .AddItem "Sao Tomé-et-Principe"
        .AddItem "Sénégal"
        .AddItem "Serbie"
        .AddItem "Seychelles"
        .AddItem "Sierra Leone"
        .AddItem "Singapour"
        .AddItem "Slovaquie"
        .AddItem "Slovénie"
        .AddItem "Somalie"
        .AddItem "Soudan"
        .AddItem "Sri Lanka"
        .AddItem "Suède"
        .AddItem "Suisse"
        .AddItem "Suriname"
        .AddItem "Swaziland"
        .AddItem "Syrie"
        .AddItem "Tadjikistan"
        .AddItem "Tanzanie"
        .AddItem "Tchad"
        .AddItem "Thaïlande"
        .AddItem "Tibet"
        .AddItem "Togo"
        .AddItem "Tonga"
        .AddItem "Trinité-et-Tobago"
        .AddItem "Tunisie"
        .AddItem "Turkménistan"
        .AddItem "Turquie"
        .AddItem "Tuvalu"
        .AddItem "Ukraine"
        .AddItem "Uruguay"
        .AddItem "Vanuatu"
        .AddItem "Venezuela"
        .AddItem "Viêt Nam"
        .AddItem "Yémen"
        .AddItem "Zambie"
        .AddItem "Zimbabwe"

        End With

 End Sub

Sub DoStuff()
UserFormMissions.Show
If UserFormMissions.blnCancel Then
   ' cancel button was pressed
Else
   ' OK button was pressed
End If

End 'vide et ferme l'USerForm

End Sub

Sub export_donnees_dans_signet_word(ligne_a_editer As Integer)

Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim j As Integer

Set WordApp = CreateObject("word.application") 'ouvre session word et le fichier voulu
Set WordDoc = WordApp.Documents.Open("\\MERLIN\gestion\MISSIONS\ESPCI\OM.doc") 'Ouvre le document

WordApp.Visible = True 'False word masqué pendant l'operation

'dans le document word, il faut avoir placé des signets aux endroits qu'on veut remplir
'à l'endroit de chaque signet qui se trouve dans le fichier word on va inscrire le contenu des cellules

'Noms dans Word des signets

'"TexBoxcontrat", "TexBoxrefciril", "TexBoxmotif", "TexBoxdeno", "TexBoxNom", "TexBoxPrenom", "TexBoxGrade",
'"TexBoxaddadm", "LisBoxPays", "TexBoxVille", "TexBoxddep", "TexBoxhdep", "TexBoxdret", "TexBoxhret", "TexBoxObs",
'"TexBoxNPrem", "TexBoxGest", "TexBoxEmail"

With WordDoc
    .FormFields("TexBoxcontrat").Result = Worksheets("Missions").Cells(ligne_a_editer, 2)
    .FormFields("TexBoxrefciril").Result = Worksheets("Missions").Cells(ligne_a_editer, 3)
    .FormFields("TexBoxmotif").Result = Worksheets("Missions").Cells(ligne_a_editer, 4)
    .FormFields("TexBoxdeno").Result = Worksheets("Missions").Cells(ligne_a_editer, 5)
    .FormFields("TexBoxNom").Result = Worksheets("Missions").Cells(ligne_a_editer, 6)
    .FormFields("TexBoxPrenom").Result = Worksheets("Missions").Cells(ligne_a_editer, 7)
    .FormFields("TexBoxGrade").Result = Worksheets("Missions").Cells(ligne_a_editer, 8)
    .FormFields("TexBoxaddadm").Result = Worksheets("Missions").Cells(ligne_a_editer, 9)
    .FormFields("LisBoxPays").Result = Worksheets("Missions").Cells(ligne_a_editer, 10)
    .FormFields("TexBoxVille").Result = Worksheets("Missions").Cells(ligne_a_editer, 11)
    .FormFields("TexBoxddep").Result = Worksheets("Missions").Cells(ligne_a_editer, 12)
    .FormFields("TexBoxhdep").Result = Worksheets("Missions").Cells(ligne_a_editer, 13)
    .FormFields("TexBoxdret").Result = Worksheets("Missions").Cells(ligne_a_editer, 14)
    .FormFields("TexBoxhret").Result = Worksheets("Missions").Cells(ligne_a_editer, 15)
    .FormFields("TexBoxObs").Result = Worksheets("Missions").Cells(ligne_a_editer, 16)
    .FormFields("TexBoxNPrem").Result = Worksheets("Missions").Cells(ligne_a_editer, 17)
    .FormFields("TexBoxGest").Result = Worksheets("Missions").Cells(ligne_a_editer, 18)
    .FormFields("TexBoxEmail").Result = Worksheets("Missions").Cells(ligne_a_editer, 19)
    '.PrintOut'
    '.Close True si on veut fermer le document word en sauvegardant les données'
End With

'WordApp.Visible = True 'affiche le document Word
'
'
'
'
'WordApp.Quit 'ferme la session Word
End Sub

Personne pour m'aider ?

UP

Bonjour Phoenix_45

Vas-y mollo sur les up en général je ne répond pas mais je suis de bonne humeur

Quand tu as ce message, tu peux cliquer sur le bouton "débogage"

Et là, tu as une ligne qui s'affiche surlignée en jaune, c'est la ligne ou se trouve ton problème

Si en plus tu déplaces le curseur de ta souris sur une variable, tu as le résultat que contient celle-ci

2016 08 01 09h55 49

Et l'erreur est sur "ComboBoxPays" alors que ton contrôle est nommé "ListBoxPays" dans ton UsF

A toi de jouer et penses au mode débogage

Bonjour,

Merci de la réponse. Moi non plus je suis pas fan de faire "up" mais bon comme c'est pour le travail et que je suis perdue j'étais comme un peu obligée. Encore désolée

J'ai corrigé ce code mais l'erreur apparaît encore. j'ai mis mon espion et c'est au bout de la huitième fois qu'il exécute la boucle que ça plante. Le seule souci c'est que je ne suis pas assez experte pour comprendre et corriger cette erreur

Re,

Il faut juste que les contrôles que tu as définit dans ton tableau

Tbl = Array("TextBoxcontrat", "TextBoxrefciril", "TextBoxmotif", "TextBoxdeno", "TextBoxNom", "TextBoxPrenom", "TextBoxGrade", "TextBoxaddadm", "ListBoxPays", "TextBoxVille", "TextBoxddep", "TextBoxhdep", "TextBoxdret", "TextBoxhret", "TextBoxObs", "TextBoxNPrem", "TextBoxGest", "TextBoxEmail")

correspondent aux noms dans ton USF

Il y a une autre erreur quand i =14 avec "TextBoxhret" le controle dans l'usf est nommé " "TextBoxhrep"

Un conseil, si je peux me permettre, évite de mettre en "dur" dans le code le chemin d'accès et le fichier à ouvrir

Set WordDoc = WordApp.Documents.Open("\\MERLIN\gestion\MISSIONS\ESPCI\OM.doc") 'Ouvre le document

Mieux vaut définir ce genre de chose dans une feuille du classeur qui pourra être masquée

A+

Merci de la réponse. En fait l'erreur de la Box Pays.

J'ai réecrit les occurrences, et ce que j'ai fait pour être simple? j'ai changé la Box en TextBox. Les gens devront donc noter le pays et là ça fonctionne

Merci encore

Re,

Perso sur ton fichier j'ai juste changé 2 choses :

"ComboBoxPays" en "ListBoxPays" et "TextBoxhrep" en "TextBoxhret"

Et ça fonctionne

Rechercher des sujets similaires à "erreur execution 2147024809 80070057"