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
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
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