Erreur automation l'objet invoqué s'est déconnecté de ses clients VBA
Bonjour à tous,
Je débute en vba.. ceci devant expliquer celà ... J'ai écris une macro qui à partir d'un formulaire remplis une base de donnée.
Elle semblait marcher, mais depuis quelques jour j'ai un message d'erreur : Erreur automation l'objet invoqué s'est déconnecté de ses clients vba
Mon fichier plante alors et se ferme sans me laisser voir d'où vient le problème... Je sais que mon code est archaïque, mais quelqu'un pourrait t-il me donner une piste de solution dans un langage pour junior svp ?
Merci d'avance.
Mon code :
'***************************************
'Procédure permettant d'ajouter un eleve
'dans la base de donnée
'***************************************
Private Sub btnvalider_Click()
'Vérifie que tous les champs sont renseignés
If txtmatricule = "" Or txtnom = "" Or txtprénom = "" Or cbxsexe = "" Or txtddn = "" Or _
cbxsalle = "" Or cbxclasse = "" Or txtparent = "" Or cbxlien = "" Or txttéléphone = "" Or _
cbxrabais = "" Or cbxstatut = "" Then
lblMessage = "Certains champs du formulaire n'ont pas été renseigné, veuillez vérifier !"
Else
'Ôter la protection des feuilles protégées
Sheets("élèves").Activate
Worksheets("élèves").Unprotect Password:="passedemot"
Range("A3").Select
Selection.End(xlDown).Select 'On se positionne sur la dernière ligne non vide
Selection.Offset(1, 0).Select 'Décalage d'une ligne et de deux colonnes vers le bas
'Reporte les informations du formulaire dans la base de donnée
ActiveCell = UCase(txtmatricule)
ActiveCell.Offset(0, 1).Value = cbxstatut
ActiveCell.Offset(0, 2).Value = UCase(txtprénom)
ActiveCell.Offset(0, 3).Value = UCase(txtnom)
ActiveCell.Offset(0, 5).Value = cbxsexe
ActiveCell.Offset(0, 6).Value = CDate(txtddn)
ActiveCell.Offset(0, 7).Value = cbxclasse
ActiveCell.Offset(0, 8).Value = cbxsalle
ActiveCell.Offset(0, 9).Value = UCase(txtparent)
ActiveCell.Offset(0, 10).Value = cbxlien
ActiveCell.Offset(0, 11).Value = txttéléphone
ActiveCell.Offset(0, 12).Value = cbxrabais
ActiveCell.Offset(0, 13).Value = Val(cbxmontant)
ActiveCell.Offset(0, 14).Value = cbxraison
ActiveCell.Offset(0, 15).Value = cbxapprouvé
'Remet le mot de passe
Worksheets("élèves").Protect Password:="passedemot"
'Positionne toi dans le TB
Sheets("TB").Activate
'positionne toi sur cette cellule
Range("A7").Select
'confirmation
lblMessage = "Enregistrement bien éffectué"
End If
End SubEdit modo : code à mettre entre balise avec le bouton </>
bonjour,
C'est qui ce lblMessage ? (= "Enregistrement bien éffectué")
Mébon difficile comme ça à partir d'un bout de code de dire grand chose, il vaudrait mieux avoir tout le classeur...
A+
Bonjour à toutes et tous,
Comme exprimé par galopin01, un complément d'information serait apprécié.
Sinon,
Private Sub btnvalider_Click()
Dim ws As Worksheet, lRow As Long, arr(14) As Variant
If txtmatricule = "" Or txtnom = "" Or txtprénom = "" Or cbxsexe = "" Or txtddn = "" Or _
cbxsalle = "" Or cbxclasse = "" Or txtparent = "" Or cbxlien = "" Or txttéléphone = "" Or _
cbxrabais = "" Or cbxstatut = "" Then
lblMessage = "Certains champs du formulaire n'ont pas été renseigné, veuillez vérifier !"
Else
arr(0) = UCase(txtmatricule)
arr(1) = cbxstatut
arr(2) = UCase(txtprénom)
arr(3) = UCase(txtnom)
arr(4) = cbxsexe
arr(5) = CDate(txtddn)
arr(6) = cbxclasse
arr(7) = cbxsalle
arr(8) = UCase(txtparent)
arr(9) = cbxlien
arr(10) = txttéléphone
arr(11) = cbxrabais
arr(12) = Val(cbxmontant)
arr(13) = cbxraison
arr(14) = cbxapprouvé
Set ws = Worksheets("élèves")
With ws
.Unprotect Password:="passedemot"
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1).Resize(1, 15).Value = arr
.Protect Password:="passedemot", userinterfaceonly:=True
End With
End If
'le formulaire est toujours actif !?
'With Worksheets("TB")
'.Activate
'.cellls(7, 1).Select
'End With
End SubMerci pour vos retours,
Je vous joint le fichier, il est très perfectible évidemment et mon amateurisme devrait vous piquer les yeux la plus part du temps...
Le formulaire qui me pose des problèmes est le formulaire frmsaisie, c'est lui qui permet de prendre les informations et les déverser dans la base de donnée "Élèves"
Je ne comprends vraiment pas pourquoi il me cause ce bug ! les autres formulaires ont été bâtit en utilisant la même logique. En procédant par élimination, je me suis rendu compte que la partie du code qui semble causer le bug est celle ci-dessous !! Et pourtant, quand je montait le formulaire et que je faisais des tests elle marchait sans problème !! J'ai essayé par tatonnement, mais je crois que je suis à la limite entre des pro et des copy and paste youtube comme moi !!
Les mots de passe dans le fichier sont : vbagood ou passedemot selon la feuille Excel.
Merci beaucoup d'avance !!
'ActiveCell = UCase(txtmatricule)
'ActiveCell.Offset(0, 1).Value = cbxstatut
'ActiveCell.Offset(0, 2).Value = UCase(txtprénom)
'ActiveCell.Offset(0, 3).Value = UCase(txtnom)
'ActiveCell.Offset(0, 5).Value = cbxsexe
'ActiveCell.Offset(0, 6).Value = CDate(txtddn)
'ActiveCell.Offset(0, 7).Value = cbxclasse
'ActiveCell.Offset(0, 8).Value = cbxsalle
'ActiveCell.Offset(0, 9).Value = UCase(txtparent)
'ActiveCell.Offset(0, 10).Value = cbxlien
'ActiveCell.Offset(0, 11).Value = txttéléphone
'ActiveCell.Offset(0, 12).Value = cbxrabais
'ActiveCell.Offset(0, 13).Value = Val(cbxmontant)
'ActiveCell.Offset(0, 14).Value = cbxraison
'ActiveCell.Offset(0, 15).Value = cbxapprouvé
Bonjour,
As-tu (regardé) testé ma proposition ?
Ton fichier n'est pas passé : Pas de bras pas de chocolat !
Cdlt.
Bonjour Jean-Eric,
Oui j'ai testé ta solution mais je rencontrais le même problème... J'ai laissé le fichier dans sa version originale pour que tu ai le fichier "brut" de départ..
Je le rajoute, pas de bras pas de chocolat :-) j'ai bien riiss, merci pour l'expression lolll.
Merci d'avance.
Bonjour à tous, juste un rappel, une âme charitable pourrait me donner une idée de solution.. ?
Merci
Il a été répondu à ce fil en MP.