La méthode 'Range' de l'objet '_Worksheet' a échoué

Résolu/Fermé
BUDGETS Messages postés 1333 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 24 novembre 2023 - Modifié le 15 mai 2017 à 15:27
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 16 mai 2017 à 00:18
Bonjour, à toutes et à tous,

Dans le fichier Référencesmenus, formulaire Saisie des menus, clic sur le bouton de commande Ajouter ce produit au menu (après avoir rempli Nature du menu (mens midi retraite), Date du menu (02/01/2017), Produit (Légumes) : (les cinq colonnes apparaissent et je choisis là LMR09 et je clique sur la ligne), Quantité produit (5.00), Période concernée (dans la liste déroulante, je clique sur Janvier 2017), Numéro du menu (1)). le message la méthode 'Range' de l'objet '-Worksheet' a échoué. Débogage : la ligne with .range(colonne & .Rows.Count).end(xlup).offset(1) s'entoure de jaune. Je place un point d'arrêt sur cette ligne puis un espion : Expression : range;Valeur : expression non définie dans le contexte;Type : empty. Normalement, d'après Patrice, les renseignements remplis, ils devraient apparaître dans la zone de liste lstProduitsDuMenu.
Patrice, qui hélas ne répond plus à mes messages, m'a envoyé tout une documentation intitulée Histoire d'un débogage : j'ai beau appuyer sur F8, le message réapparaît Si j'essaie de monter ou de descendre, rien de spécial ne se passe.
Comme je l'ai dit à Patrice, ce débogage c'est de la connerie car il n'apporte aucune aide, les erreurs sont incompréhensibles et pas suffisamment détaillées et, enfin, la ligne qui s'entoure de jaune n'est pas forcément là où se trouve l'erreur.
Je le répète toujours : je suis un néophyte en programmation et je n'ai pas l'esprit de déduction développé.
Alors j'espère que malgré tout quelqu'un va bien vouloir aider un néophyte en programmation et à l'esprit de déduction non développé.
Quekque soit le with choisi (feuille shListe de choix menus, shRécapitulatif saisie des menus ou sh Historique des menus), le problème est toujours le mêm.
D'avance merci.
Bonnes fin de journée et continuation.
https://www.cjoint.com/c/GEpnwPoLOBg



BUDGETS

2 réponses

jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 15 mai 2017 à 16:09
Bonjour,


Comme je l'ai dit à Patrice, ce débogage c'est de la connerie car il n'apporte aucune aide, les erreurs sont incompréhensibles et pas suffisamment détaillées et, enfin, la ligne qui s'entoure de jaune n'est pas forcément là où se trouve l'erreur.

Non ... ce n'est pas de la "connerie" ... c'est comme ça qu'on débug un programme pour essayer de trouver les erreurs....


j'ai beau appuyer sur F8, le message réapparaît

Heu.. oui.. la touche F8 n'est pas une touche magique... elle ne fait pas disparaitre les messages d'erreurs... elle permet de faire tourner ton code en "pas à pas" pour essayer de situer l'erreur et te laisser le temps de regarder la valeur de tes différentes variables.


Si j'essaie de monter ou de descendre, rien de spécial ne se passe

Dans la documentation et les discussions que tu as eu avec Patrice... il t'a expliqué ce qu'était un "espion" et comment regarder la "valeur" des variables.
C'est cela qu'il faut faire pour essayer de comprendre le souci.


Après un premier essai.. ton code tombe en erreur ici
   With .Range(Colonne & .Rows.Count).End(xlUp).Offset(1)

Ligne qui se situe dans le code :

Private Sub cmdAjouterCeProduitAuMenu_Click()
'Ajoute une nouvelle ligne de références

Dim LngIndex As Long 'Index du combo box
Dim strRéférencesMenus As String 'Références
'Mémoriser la référence
strRéférencesMenus = Me.cboRéférences.Text
'Ajouter la ligne
LngIndex = Me.cboRéférences.ListIndex
With shHistoriqueDesMenus
    With .Range(Colonne & .Rows.Count).End(xlUp).Offset(1)
        .Offset(0, 0).Value = Me.cboDateDuMenu
        .Offset(0, 1).Value = Me.cboRéférences
        .Offset(0, 6).Value = Me.textQuantitéProduit
        
        
    End With
End With
'Réinitialiser les combo boxes du produit
Call InitialiseLesCboDuProduit
'Sélectionner la référence
Me.cboRéférences.Text = strRéférencesMenus
End Sub



... et ... oh quelle surprise .. en passant la souris sur les variables .. voila ce que j'obtiens pour "Colonne" :


Si je ne m'abuse ... "Mars 2017" .. n'est pas une COLONNE .....


Mais...mais.... en plus.... c'est pas vrai que... mais si !! ... c'est bien la même remarque que l'exemple donné par Patrice pour le débugage ...
ICI : https://forums.commentcamarche.net/forum/affich-34084967-type-de-variables-et-quels-objets?page=2#239


!!!!....



Je le répète toujours : je suis un néophyte en programmation et je n'ai pas l'esprit de déduction développé.

Heureusement pour toi... ça s'apprend..... mais fais vite ... ça devient urgent !




Cordialement, 
Jordane                                                                 
0
BUDGETS Messages postés 1333 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 24 novembre 2023
15 mai 2017 à 16:19
Bonjour Jordane
Pourquoi il apparait "Mars 2017" qui est la période concernée ? Qu'est qui devrait apparaître pour que colonne soit acceptée ? Pour moi, c'est un grand mystère
-1
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
15 mai 2017 à 16:29
Mais c'est pas vrai ..!!!!
As tu RELU le message (le lien) de Patrice que je t'ai redonné ???

As tu exécuté ton code en mode PAS A PAS ????
Si oui.. tu aurais vu que la variable COLONNE est modifiée dans la sub
Private Sub cboPériodeConcernée_Change()
'Choix de la période oncernée
    If NoEvents Then Exit Sub
    Colonne = Me.cboPériodeConcernée.Value
    Call Initialise_cboPériodeConcernée
End Sub


Hors... Me.cboPériodeConcernée.Value contient la DATE concernée .. et non le NUMERO de colonne correspondant ....
Une colonne c'est une COLONNE EXCEL. Donc soit un nombre .. soit une LETTRE.
Pour rappel .. dans excel .. La colonne A = 1

Perso.. je m'arrête là., Je ne ferai pas comme Patrice à tenter, en vain, de traiter tes questions au bout de 250 messages ....
Ici nous AIDONS ... nous ne faisons pas le boulot à votre place. Nous ne sommes pas là non plus pour servir de prof ....
Je pense que tu dois absolument apprendre (et comprendre) les bases de la programmation et du debogage avant de continuer ton projet (qui ressemble à une usine à gaz ....)
Projet qui serait sûrement plus simple à réaliser avec un SGBD (comme access par exemple ) au lieu d'un classeur Excel.


Bonne continuation.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
15 mai 2017 à 16:50
Cinq dollars que ca va encore aller au post 300 ... tenu ?
0
BUDGETS Messages postés 1333 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 24 novembre 2023 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
15 mai 2017 à 22:05
Si on me répondait correctement à mes questions au lieu de tourner toujours autour du pot, je ne serai pas obligé d'intervenir si souvent !
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > BUDGETS Messages postés 1333 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 24 novembre 2023
15 mai 2017 à 22:43
Si tu lisais entièrement et correctement les reponses qui te sont données et essayais un minimum de les comprendre tu ne viendrais pas poser 50 fois la même question....
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > BUDGETS Messages postés 1333 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 24 novembre 2023
Modifié le 16 mai 2017 à 01:36
Si tu pouvais également éviter de poser la même question à plusieurs endroits en même temps sur le forum ça serait bien.... (on te l'a déjà dit en plus.... ).

Bref...
pari gagné .. on s'arrêtera au septième message ... (vu que je ferme cette discussion pour cause de doublon ! )

NB : Si on "tourne autour du pot" comme tu le dis .. c'est que non seulement nous ne sommes pas là pour faire le boulot à ta place ... mais que si, au passage, tu parviens à apprendre un minimum... tu seras en mesure de te corriger toi même.... c'est une bonne idée non ?

Bonne soirée.
0