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 Sub

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

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 Sub

ci-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? pas facile d'etre novice la dedans ..

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 Sub

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

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

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 Sub

Et il fonctionne, de manière stable. Je remercie tout le monde pour votre aide!

Rechercher des sujets similaires à "methode default objet range echoue erreur execution 214741784"