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 :

Encore un Find qui bug [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut Encore un Find qui bug
    Bonjour,

    J'ai encore un soucis avec un .Find, mais les solutions que j'avais obtenu la dernière fois ne s'appliquent pas dans ce cas

    Voici le code incriminé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub numaff_Change()
        If comcreation.numaff.Value <> "" Then
            comcreation.Numclient.Caption = numerosaff.Cells(comcreation.numaff.ListIndex + 6, 5)
        End If
        'si c'est la première commande sur ce numero d'affaire
        temp = commandes.Range("I:I").Find(comcreation.numaff.Value, commandes.Cells(6, 9), xlValues, xlWhole, xlByRows, xlNext).Row
        If temp Is Nothing Then
            comcreation.devis.Enabled = True
        Else
            comcreation.devis.Enabled = False
            comcreation.montantdevis.Value = commandes.Cells(temp, 27)
        End If
    End Sub
    A la ligne "temp = commandes.Range ......", j'ai le message d'erreur :
    erreur d'execution 91 :
    Variable objet ou variable de bloc With non définie
    Je ne vois pas où est l'erreur, un peu d'aide me serait utile !

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    essaye peut être (mais sans trop de conviction)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set temp = commandes.Range("I:I").Find(comcreation.numaff.Value, commandes.Cells(6, 9), xlValues, xlWhole, xlByRows, xlNext).Row

  3. #3
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Je suis d'accord avec Krovax, il faut utiliser le set, un exemple perso qui fonctionne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MaColonne As Range
    Set MaColonne = F2.Rows("1:1").Find(What:=MaRecherche, LookIn:=xlValues, LookAt:=xlPart)

  4. #4
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    merci de vos réponses.

    Citation Envoyé par Krovax Voir le message
    essaye peut être (mais sans trop de conviction)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set temp = commandes.Range("I:I").Find(comcreation.numaff.Value, commandes.Cells(6, 9), xlValues, xlWhole, xlByRows, xlNext).Row
    En utilisant ta solution j'ai l'erreur :
    Erreur de compilation :
    Objet requis
    sur le .row.

    J'ai essayé de dissocier le .row :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Set temp1 = commandes.Range("I:I").Find(comcreation.numaff.Value, commandes.Cells(6, 9), xlValues, xlWhole, xlByRows, xlNext)
        temp = temp1.Row
    Mais cela me renvoi l'erreur 91 sur la ligne deuxième ligne.

  5. #5
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    As-tu déclaré la variable ?


    edit : je viens de faire le test suivant et il fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub essai()
    Set temp = Feuil2.Range("I:I").Find("test", Feuil2.Cells(6, 9), xlValues, xlWhole, xlByRows, xlNext)
    temp.select
    end sub

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Je n'avais pas vue le .row désolé.
    J'ai fait quelque test
    Ce code fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim temp1 As Range, i As Long
     
     Set temp1 = Range("A1:B5").Find("Hello")
     i = temp1.Row
    MsgBox i
    Mais pas parfaitement, en fait il plante si tu ne trouve rien, erreur 91

    Je dirais donc de tester si il y a bien un quelque chose de trouvé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim temp1 As Range, temp As Long
    Set temp1 = Range("A1:B5").Find("Hello")
    if temp1 is nothing then
       msgbox "Le numéro d"affaire n'a pas été trouvé" 'enfin ca a l'air de parler d'un truc proche 
       exit sub
    end if
    temp = temp1.Row

  7. #7
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    Cela avance !
    Le code ne plante plus (merci à vous), mais il ne fait pas ce qu'il faut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub numaff_Change()
        If comcreation.numaff.Value <> "" Then
            comcreation.Numclient.Caption = numerosaff.Cells(comcreation.numaff.ListIndex + 6, 5)
        End If
        'si c'est la première commande sur ce numero d'affaire
        Dim temp1 As Range
        Dim temp As Long
        Set temp1 = commandes.Range("I:I").Find(comcreation.numaff.Value, commandes.Cells(6, 9), xlValues, xlWhole, xlByRows, xlNext)
     
        If temp1 Is Nothing Then
            comcreation.devis.Enabled = True
        Else
            temp = temp1.Row
            comcreation.devis.Enabled = False
            comcreation.montantdevis.Value = commandes.Cells(temp, 27)
        End If
    End Sub
    Dans mon test, j'ai comcreation.numaff.Value = "9", et le premier élément commandes.cells(6,9)=9, donc temp1 devrait pointer sur la cellule (6,9).

    Mais en regardant de plus près avec un point d'arrêt, temp1=nothing ce que je ne comprend pas !

  8. #8
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    RE,


    comme tu commence a rechercher à partir de commandes.Cells(6, 9) avec xlnext, c'est normal qu'il ne trouve rien, c'est comme si tu étais sur cette cellule dans excel et que tu clique sur suivant dans ta recherche.

    Pour que cette cellule soit prise en compte il faut débuter la recherche sur la ligne 5 (testé).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Encore un scrollPane qui ne scroll pas
    Par Yann39 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/12/2006, 09h41
  2. innerHTML qui bug sous IE
    Par krolineeee dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/06/2006, 16h28
  3. [Ouverture fichier] Chemin qui bug !
    Par nebule dans le forum Langage
    Réponses: 15
    Dernier message: 18/05/2006, 09h59
  4. [2.0] Get sur une variable d'application qui bug ??
    Par brousaille dans le forum ASP.NET
    Réponses: 8
    Dernier message: 14/03/2006, 05h08
  5. [RCP]tuto Ibm qui bug
    Par sglug dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 03/10/2005, 15h11

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