IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur sur une ligne alors quelle fonctionne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 29
    Par défaut Erreur sur une ligne alors quelle fonctionne
    Bonjour à tous ..
    un problème me prend vraiment vraiment la tête
    lors de l’exécution de ces lignes excel me sort erreur rreur d'éxecution -2147417848 ( 80010108) la methode range de l'objet "_Worksheets" a échoué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim derln As Integer
    
    If IsEmpty(TextBox2.Value) = False And Worksheets("Listes").Range("P12:P1000").Find(TextBox2.Value) Is Nothing And TextBox2.Value < 2100 And TextBox2.Value > 1900 Then
            derln = Worksheets("Listes").Range("P" & Rows.Count).End(xlUp).Row
            Worksheets("Listes").Range("P" & derln + 1) = UserForm2.TextBox2.Value
            'classer croissant
    Mais le plus étonnant dans tout ça vous l'aurez compris, c'est que je récupère bien la valeur de UserForm2.TextBox2 dans la 1ere ligne non vide de la feuille Listes colonne P.
    Je ne comprends absolument RIEN.

    merci à vous !

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Worksheets("Listes").Range("P12:P1000").Find(TextBox2.Value)
    retourne un Range que tu doit affecter à un objet Range avec l'instruction Set :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set Cel =  Worksheets("Listes").Range("P12:P1000").Find(TextBox2.Value)
    et ensuite, tester si Nothing ou pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim Cel As Range
     
    If IsEmpty(TextBox2.Value) Then Exit Sub
     
    Set Cel = Worksheets("Listes").Range("P12:P1000").Find(TextBox2.Value)
     
    If Cel Is Nothing And TextBox2.Value < 2100 And TextBox2.Value > 1900 Then
     
        derln = Worksheets("Listes").Range("P" & Rows.Count).End(xlUp).Row
        Worksheets("Listes").Range("P" & derln + 1) = UserForm2.TextBox2.Value
        'classer croissant
     
    End If

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    j'ai l'impression que tu est finalement sauvé par la conversion implicite, si chère à VB


    Citation Envoyé par Christof7 Voir le message
    Bonjour à tous ..
    un problème me prend vraiment vraiment la tête
    lors de l’exécution de ces lignes excel me sort erreur rreur d'éxecution -2147417848 ( 80010108) la methode range de l'objet "_Worksheets" a échoué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    
            Worksheets("Listes").Range("P" & derln + 1) = UserForm2.TextBox2.Value
            'classer croissant
    Mais le plus étonnant dans tout ça vous l'aurez compris, c'est que je récupère bien la valeur de UserForm2.TextBox2 dans la 1ere ligne non vide de la feuille Listes colonne P.
    Je ne comprends absolument RIEN.
    merci à vous !
    Déjà, en commençant VBA tolère le + comme opérateur de concaténation de texte. Et je pense que c'est cela qui génère le message d'erreur. Mais comme tu as (heureusement) désigné derln comme un nombre entier VBA a probablement pu récupérer l'erreur et effectuer l'opération au lieu de planter, parce que la conversion implicite dans VB permet de jouer avec les types de de données sans trop de plantages.
    essaie plutôt comme cela, juste pour voir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim derln As Integer
     
    If IsEmpty(TextBox2.Value) = False And Worksheets("Listes").Range("P12:P1000").Find(TextBox2.Value) Is Nothing And TextBox2.Value < 2100 And TextBox2.Value > 1900 Then
            derln = Worksheets("Listes").Range("P" & Rows.Count).End(xlUp).Row + 1
            Worksheets("Listes").Range("P" & derln ) = UserForm2.TextBox2.Value
            'classer croissant
    Si Le message persiste, c'est possible que l'erreur soit ailleurs.

    P.S. Je suis tombé sur la réponse de Theze après l'envoi de la mienne. Sa réponse me semble très logique. (Désolé pour le télescopage.)

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 29
    Par défaut
    Merci a vous pour votre réactivité mais malheureusement aucune de vos solutions ne marchent.. toujours la même erreur
    Et j'ai aussi oublié que le pire dans tous ca.. c'est qu'a un moment dans la journée j'ai juste eu a fermer et a reouvrir excel pour que la macro fonctionne.. je ne remets pas en question les qualités d'excel mais je me pose quand meme des questions lol

    je vous mets le fichier si l'un d'entre vous en aurait besoin..

    Merci !Copie de projet excel avec macros bonne base de donnée.xlsm

    EDIT : j'arrive a faire marcher le code a l'ouverture de excel, mais des lors que j'ouvre visual basic, hop , le code ne fonctionne plus comme par magie ... INCOMPRÉHENSIBLE.

Discussions similaires

  1. [MySQL] Message d'erreur sur une requête UPDATE qui fonctionne
    Par Aleadia dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 25/01/2013, 21h31
  2. Accès SQL dans fichier excel erreur sur une ligne
    Par troubleshooting dans le forum Excel
    Réponses: 3
    Dernier message: 17/11/2009, 14h46
  3. erreur sur une ligne
    Par zabdaniel dans le forum Langage
    Réponses: 2
    Dernier message: 03/12/2007, 15h19
  4. message d'erreur sur une ligne inexistante
    Par zabdaniel dans le forum Langage
    Réponses: 3
    Dernier message: 03/12/2007, 14h39
  5. [MySQL] Erreur d'argument sur une ligne mais quelle
    Par spirou34fr dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/01/2007, 07h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo