XL 2016 La méthode "Value" de l'objet Range a échoué - Userform

Anarhim

XLDnaute Nouveau
Bonjour,
Tout content de ma dernière formation Excel, je sors confiant sur le fait de pouvoir créer des Userforms afin de faciliter la vie des utilisateurs. Je me lance dans un fichier test et après environs 20min de travail, je me retrouve bloqué quasiment au tout début de mon projet...

J'ai beau relire encore et encore les quelques lignes que j'ai codé, je ne comprends pas pourquoi Excel plante dès que j'essai d'ajouter un site.

Ca me dit :
Erreur d'éxécution '-2147417848 (80010108)':
La méthode 'Value' de l'objet 'Range' a échoué

Pourriez-vous m'aider à y voir plus clair svp ?

Cordialement.
 

Pièces jointes

  • Fichier.xlsm
    20 KB · Affichages: 16

Anarhim

XLDnaute Nouveau
Bonjour,
Merci pour votre essai.

J'ai remarqué quelque chose. Si au lieu d'aller à la dernière ligne vide je vais à la ligne encore après, la macro ne plante plus.

VB:
Private Sub btn_ajouter_site_Click()
    Dim der_lig_vide As Integer
    Dim trouv_colonne As Integer
    Dim nouveau_site As String
   
    nom_fichier = ActiveWorkbook.Name
    nom_feuille = "CONFIG"
    der_lig_vide = Range("Tableau_Site[SITE]").End(xlDown).Row + 1
    trouv_colonne = Range("Tableau_Site[SITE]").Column
   
    nouveau_site = InputBox("Nouveau site")
    Cells(der_lig_vide + 1, trouv_colonne).Value = nouveau_site

End Sub

Est-ce que ce ne serait pas dû au fait d'utiliser un Range.Value alors que je devrais utiliser mon tableau directement ? N'y a t-il pas une méthode directement implémentée dans VBE pour ajouter une ligne à un tableau un truc du genre .addrow ?

Peut-être que le fait que ma plage soit défini dans un tableau fait planter la macro lorsqu'on écrit directement en-dessous ?

Cordialement.
 

jmfmarques

XLDnaute Accro
Bonjour
Je n'ouvre jamais un classeur tiers et n'ai donc pas ouvert celui en cause
Le bout de code montré met en exergue l'existence d'un tableau structuré nommé "Tableau_Site" et dont l'une des colonnes est nommée SITE
J'appelle l'attention sur le fait d'utiliser comme montré l'argument xldown peut être maladroit. Si la colonne SITE est par exemple vide, der_lig_vide retournera la ligne inconnue du tableau égale au rows.count + 1 (en dehors du tableau, donc);

Si par contre la colonne SITE n'est pas entièrement vide, mais que l'une de ses cellules en amont de la dernière remplie est vide, der_lig_vide retournera non le rang de la cellule en aval de la dernière remplie, mais celui en aval de la première cellule vide.
 

GALOUGALOU

XLDnaute Accro
bonjour anarhim bonjour le fil bonjour le forum

désolé
j'ai peut être tord mais j'ouvre les classeurs (enfin pas toujours), et dans le cas du votre, désolé, je ne rencontre pas le problème évoqué.
je l'ai téléchargé trois fois et par trois fois je n'ai eu aucun problème à ajouter un site.
donc fanfan38 a peut être raison, un poisson, bonne blague.
sans rire je viens de faire le test une quatrième fois et tout ok.
cordialement
galougalou
 

Anarhim

XLDnaute Nouveau
Bon, j'ai téléchargé mon propre tableur et refait le test. Ca a fonctionné 2 fois puis replantage en boucle et maintenant ça semble fonctionner alors que je n'ai rien changé... Je ne comprends vraiment pas...

Bref, merci quand même pour votre participation.

J'en profite quand même pour poser des questions liées aux remarques de jmfmarques.
Comment faire pour éviter l'erreur si la colonne SITE est vide ? Un simple if sur le rows.count par exemple ? si la colonne SITE est vide, alors juste rows.count et si elle contient au moins un argument rows.count +1 ?

Après pour la deuxième remarque, il n'y aura pas de valeur vide, je vais sécuriser le formulaire pour qu'on ne puisse pas le valider si jamais on écrit une valeur vide.

Cordialement.
 

jmfmarques

XLDnaute Accro
Comment faire pour éviter l'erreur si la colonne SITE est vide ? Un simple if sur le rows.count par exemple ?
Si elle est vide, CountIf te permet par exemple de le savoir. Et si tel est le cas -->> aller à la première ligne parait évident, me semble-t-il ...

je te rappelle par ailleurs ce que j'ai écrit plus haut au sujet de l'argument xldown. L'argument xlup te permet, lui, de déterminer la dernière ligne remplir en amont d'un rang (lequel peut être celui du dernier rang de ton tableau structuré).
 

Discussions similaires

Statistiques des forums

Discussions
314 717
Messages
2 112 169
Membres
111 450
dernier inscrit
nath_omic