La méthode default de l'objet range a échoué - erreur d'exécution 214741784
Bonjour,
Dans le cadre de mes études je dois réaliser un petit fichier excel, et j'ai donc décidé d'utiliser le langage vba.
Etant novice, je me suis débrouillé avec des tutos.
Cependant, j'ai un problème.
Mon fichier est composé d'UserForm, et les informations saisies dans les combobox de ces userform doivent être saisies dans la base de données excel.
Pour cela, j'ai décidé dans chaque userform d'utiliser le code suivant :
Private Sub BtnValider_Click()
Feuil3.Activate
Feuil3.Range("L1000").End(xlUp).Offset(1, 0).Select
ActiveCell = Me.BoxNom
'ActiveCell.Offset(0, 1) = Me.BoxEmail
'ActiveCell.Offset(0, 2) = Me.BoxTel
Unload Me
End SubLe même type de code devra être utilisé dans tous les userform du fichier pour rentrer les données dans la base de données.
Lorsque je lance l'userform, que je saisis mes infos et que je valide, j'ai l'erreur suivante :
Erreur d'exécution '-2147417848 (80010108)
La méthode '-Default' de l'objet 'Range' a échoué.
A la suite de quoi excel plante.
J'ai tout essayé, je n'arrive pas à débloquer mon programme...
Je suis loin d'avoir terminé mon programme ni d'avoir fait le plus dur et je désespère déjà...
Je vous mets le fichier en piece jointe si ça peut vous aider, c'est sur l'userform "FormulaireNouveauContact" que le probleme est présent, mais le code étant censé être semblable pour les autres userform je suis bloqué partout ...
Merci d'avance pour votre aide
Nicolas
J'ai mis les deux lignes :
ActiveCell.Offset(0, 1) = Me.BoxEmail
ActiveCell.Offset(0, 2) = Me.BoxTel
actives et tout ce passe bien!?
Nom+mail+Tel
après la saisie les données sont bien en feuille "Données"
En fait, j'ai bien l'impression que l'erreur est aléatoire ...
Suite à votre réponse j'ai récupéré le fichier que je vous ai envoyé sur le forum et je l'ai exécuté (en activant les deux lignes comme vous l'avez dit) : il fonctionne, les valeurs des combobox sont écrites dans la feuille "Données".
Je le relance, je valide, j'ai la même erreur ... c'est incompréhensible ..
Bon, je viens d'essayer le fichier sur un autre ordinateur chez moi (mac), effectivement le fichier fonctionne sans problème .. Une explication au fait qu'un fichier fonctionne sans bug sur un ordinateur et non sur un autre ?...
Car ce fichier est destiné à être utilisé par une 20aine de personnes donc si il ne fonctionne que pour la moitié d'entre eux ...
Merci pour vos réponses.
Bonjour,
Je pense aussi que ce fichier a un bug.
Même en codant de manière différente plantage alléatoire crash excel et redémarrage.
Sur un autre ordinateur ( Mac) mais tous les utilisateurs sont sur Mac ? les fichiers excel fait pour les deux mac et pc
çà foire tout le temps.
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonsoir,
Vous employez des tableaux structurés, c'est bien mais il faut les utiliser correctement :
1- ils ne doivent pas comporter de lignes vides
2- au niveau du code, il est bien préférable d'utiliser la classe relative à ces tableaux, soit la classe ListObject et non la classe Range.
ci-dessous exemple de code :
'Action du clic sur le bouton valider
Private Sub BtnValider_Click()
Dim tb_contacts As ListObject
Dim ligne As ListRow
'On assigne le tableau structuré
Set tb_contacts = [TableauContacts].ListObject
With tb_contacts
'On ajoute une ligne au tableau
Set ligne = .ListRows.Add
'Affectation des données du formulaire dans la feuille Données
.ListColumns("Nom du contact").DataBodyRange.Rows(ligne.Index) = Me.BoxNom.Value
.ListColumns("Email").DataBodyRange.Rows(ligne.Index) = Me.BoxEmail.Value
.ListColumns("N° Téléphone").DataBodyRange.Rows(ligne.Index) = Me.BoxTel.Value
End With
'Fermer le formulaire d'ajout du contact pour retourner sur celui de création du REX
Unload Me
End Subci-joint fichier avec suppression des lignes vides de vos tableaux structurés
Bonjour,
Je pense aussi que ce fichier a un bug.
Même en codant de manière différente plantage alléatoire crash excel et redémarrage.
Sur un autre ordinateur ( Mac) mais tous les utilisateurs sont sur Mac ? les fichiers excel fait pour les deux mac et pc
çà foire tout le temps.
Effectivement ... Non tous les utilisateurs seront sur windows (7 et 10). J'ai juste essayé sur mon mac pour voir si le probleme ne venait pas de mon pc ... Mais aujourd'hui, sur le pc de mon travail j'ai le meme bug. Donc il y a bien un bug sur le fichier .. mais ou?
Bonsoir,
Vous employez des tableaux structurés, c'est bien mais il faut les utiliser correctement :
1- ils ne doivent pas comporter de lignes vides
2- au niveau du code, il est bien préférable d'utiliser la classe relative à ces tableaux, soit la classe ListObject et non la classe Range.
ci-dessous exemple de code :
'Action du clic sur le bouton valider Private Sub BtnValider_Click() Dim tb_contacts As ListObject Dim ligne As ListRow 'On assigne le tableau structuré Set tb_contacts = [TableauContacts].ListObject With tb_contacts 'On ajoute une ligne au tableau Set ligne = .ListRows.Add 'Affectation des données du formulaire dans la feuille Données .ListColumns("Nom du contact").DataBodyRange.Rows(ligne.Index) = Me.BoxNom.Value .ListColumns("Email").DataBodyRange.Rows(ligne.Index) = Me.BoxEmail.Value .ListColumns("N° Téléphone").DataBodyRange.Rows(ligne.Index) = Me.BoxTel.Value End With 'Fermer le formulaire d'ajout du contact pour retourner sur celui de création du REX Unload Me End Subci-joint fichier avec suppression des lignes vides de vos tableaux structurés
Bonjour, d'abord merci pour votre réponse.
Etant débutant j'ai essayé de comprendre votre code, je pense l'avoir à peu près compris.
Sauf erreur de ma part, votre code ne prend pas en compte le fait qu'il faut saisir les informations dans la première case ligne de ce tableau ?
En effet , lorsque je l'exécute une fois avec votre code il fonctionne parfaitement, mais la deuxieme fois il plante, alors qu'il devrait insérer un second contact sur la ligne en-dessous ..
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Sauf erreur de ma part, votre code ne prend pas en compte le fait qu'il faut saisir les informations dans la première case ligne de ce tableau ?
Votre tableau comporte 3 colonnes : nom, email, téléphone. Ces 3 cases sont donc à remplir pour chaque ligne.
,En effet , lorsque je l'exécute une fois avec votre code il fonctionne parfaitement, mais la deuxieme fois il plante, alors qu'il devrait insérer un second contact sur la ligne en-dessous ..
A partir de votre formulaire nouveau contact , je n'ai aucun plantage pour l'insertion d'un deuxième contact. Précisez donc les conditions de votre plantage et en particulier l'instruction qui le provoque.
Sauf erreur de ma part, votre code ne prend pas en compte le fait qu'il faut saisir les informations dans la première case ligne de ce tableau ?
Votre tableau comporte 3 colonnes : nom, email, téléphone. Ces 3 cases sont donc à remplir pour chaque ligne.
,En effet , lorsque je l'exécute une fois avec votre code il fonctionne parfaitement, mais la deuxieme fois il plante, alors qu'il devrait insérer un second contact sur la ligne en-dessous ..
A partir de votre formulaire nouveau contact , je n'ai aucun plantage pour l'insertion d'un deuxième contact. Précisez donc les conditions de votre plantage et en particulier l'instruction qui le provoque.
Oui, alors le plantage apparait lorsque j'ajoute un nouveau contact, je ferme les deux formulaires (créer un nouveau rex et ajouter un contact), je les réouvre, je tente d'ajouter à nouveau un contact, et là excel plante avec le message d'erreur suivant :
Erreur d'exécution -2147417848 (80010108) La méthode add de l'objet 'ListRows' a échoué.
Merci
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Oui, alors le plantage apparait lorsque j'ajoute un nouveau contact, je ferme les deux formulaires (créer un nouveau rex et ajouter un contact), je les réouvre, je tente d'ajouter à nouveau un contact, et là excel plante avec le message d'erreur suivant :
Erreur d'exécution -2147417848 (80010108) La méthode add de l'objet 'ListRows' a échoué.
Vous devez utiliser un fichier qui vous est propre.
1- Comment affichez-vous le formulaire nouveau contact ?
2- Communiquez une version anonymisée du fichier que vous utilisez
Je l'ouvre par une macro qui ouvre un module, le module ouvrant lui meme l'userform (userform.show).
En me démerdant, j'ai choisi d'utiliser ce code là :
Private Sub BtnValider_Click()
'Activation de la feuille dans laquelle seront ecrites les informations
Sheets("Données").Activate
'sélection de la case dans la quelle sera saisie l'information
Range("N3").Select
'recherche de la premiere case vide
While Selection <> ""
Selection.Offset(1, 0).Select
Wend
'Remplissage des cases avec ce qui a été saisi dans les cases
ActiveCell = BoxNom.Value
ActiveCell.Offset(0, 1) = BoxEmail.Value
ActiveCell.Offset(0, 2) = BoxTel.Value
'Fermer le formulaire
Unload Me
End SubEt il fonctionne, de manière stable. Je remercie tout le monde pour votre aide!