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 :

Problème méthode Find : Fonctionne avec cells mais pas avec range [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Par défaut Problème méthode Find : Fonctionne avec cells mais pas avec range
    Bonjour tout le monde,

    Je rencontre un problème, mais je ne comprends pas l'origine de ce dernier. J'ai un tableau excel classique avec trois colonnes. On trouve dans la première colonne une liste d'intitulés (texte). Je souhaites que ces intitulés soient manipulés grâce à un userform et notamment une ComboBox. L'Userform fonctionne très bien et le combobox récupère les valeurs de la colonne en question.

    Dans le code ci-dessous. je récupère le numéro de ligne de la cellule ayant pour valeur celle de la combobox du formulaire. J'utilise donc .Find

    le code suivant fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public a As Long
     
    Private Sub ComboBox_AF_DepPerso_Change()
     
    Dim cherche As String
     
    cherche = ComboBox_AF_DepPerso.Value 'la valeur à recherché est selectionné dans la combobox
     
     
    a = Cells.Find(What:=cherche, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows).Row
     
    MsgBox a
     
    End Sub
    Cependant, je ne souhaite pas parcourir l'ensemble des Cells pour rechercher la cellule comprenant la valeur du combobox. Je souhaite seulement une plage de cellule bien déterminée, en l’occurrence cette fameuse 1ère colonne de mon tableau.

    J'ai donc naturellement essayé ce code :

    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
    18
    Public DerLigneAFTab1 As Long
    Public a As Long
     
    Private Sub ComboBox_AF_DepPerso_Change()
     
    Dim cherche As String
     
    cherche = ComboBox_AF_DepPerso.Value ' la valeur à recherché est selectionné dans la combobox
     
    Set PlageAfTab1 = Sheets("EDD 1").Range("C" & lignestab1(1) & ":C" & DerLigneAFTab1)
     
    'lignestab1 est la première ligne de la colonne et DerLigneAFTab1 la dernière ligne de la colonne
     
     a = PlageAfTab1 .Find(What:=cherche, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows).Row
     
    MsgBox a
     
    End Sub
    Ce code ne fonctionne pas du tout. Le débogage souligne la variable "a" avec ce message :

    Erreur d'instruction : 91. Variable d'objet ou variable de bloc with non définie
    Ca me dépasse complètement. Pourquoi cela fonctionnerait avec Cells et pas Range ? J'ai essayé avec une plage Range fixe et large, du genre Range("A1300"). Toujours le même problème.

    Pouvez-vous m'aider s'il vous plaît ?

    Bien à vous.

  2. #2
    Membre expérimenté
    Homme Profil pro
    développeur
    Inscrit en
    Février 2013
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : développeur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 123
    Par défaut
    Bonjour,

    La méthode range.find renvoie un objet range.
    essaye en changeant le type de la variable a en range

    Bonne journée !

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Par défaut Of course !
    Bonjour MacKay77,

    Incroyable réactivité et je t'en remercie !

    Cela fonctionne parfaitement, merci beaucoup !

    Voici le code corrigé :

    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
    18
    
    Public DerLigneAFTab1 As Long
    Public a As Range
    
    Private Sub ComboBox_AF_DepPerso_Change()
    
    Dim cherche As String
    
    cherche = ComboBox_AF_DepPerso.Value
    
    Set PlageAfTab1 = Sheets("EDD 1").Range("C" & lignestab1(1) & ":C" & DerLigneAFTab1)
    
    Set a = Cells.Find(What:=cherche, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
    
    MsgBox a.Row
    
    End Sub

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

Discussions similaires

  1. Ajax fonctionne avec FF mais pas avec IE
    Par heliophane dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/08/2008, 23h01
  2. Réponses: 1
    Dernier message: 22/07/2008, 09h48
  3. Réponses: 4
    Dernier message: 14/02/2008, 20h13
  4. Fonction JS qui fonctionne avec Mozilla mais pas avec IE.
    Par etiennegaloup dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/10/2005, 13h58
  5. Programme fonctionnant sur Eclipse mais pas avec le jar?
    Par kirik dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/02/2004, 13h43

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