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 :

.find vers un autre classeur ??


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Par défaut .find vers un autre classeur ??
    Voila mon probleme:
    Comment faire une recherche sous VB (.find) dans un classeur différent de celui dans lequel je crée ma macro ??

    ( c'est la premiere fois que je programme sous VB donc soyez indulgent par rapport au code inutile... )

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    Dim C As Range
    Set C = Intersect(Target, Range("G13:AD29"))
    If C Is Nothing Then Exit Sub
    
    Dim ColonneInfo1 As Range
    Dim ColonneInfo2 As Range
    Dim Parametre As Range
    Dim Identifiant As Range
    
    Set ColonneInfo1 = Range("F:F")
    Set ColonneInfo2 = Range("AE:AE")
    ColonneInfo1.Clear: ColonneInfo2.Clear
    Cells(9, 6).Value = "Colonne Info": Cells(9, 31).Value = "Colonne Info"
    
    Colonne = ActiveCell.Column
    Ligne = ActiveCell.Row
    
    Set Parametre = Cells(11, Colonne)
    Set Identifiant = Cells(Ligne, 1)
    If Parametre Is Nothing Or Identifiant Is Nothing Then Exit Sub
    
    Param = Parametre.Value
    
    ' Je veux rechercher la case contenant Param dans la 1ere colonne
    ' d'un autre classeur que celui sous lequel je crée la macro
    
    MsgBox Param
    MsgBox "ok"
    
    End Sub



    J'ai essayé avec un code du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(Param,'[Tables.xls]Tables'!R12C1:R905C2,2,FALSE)"
    mais bien sur ca ne fonctionne pas (cf Param)

    Merci d'avance!


    Si vous voulez plus de précisions:

    Sous Excel j'ai créé un tableau, dont la premiere ligne est une liste de paramètres et la premiere colonne une liste d'indentifiant.
    Chaque case du tableau (rempli à chaque utilisation) doit correspondre à la valeur du paramètre pour l'identifiant. Ce remplissage du tableau se fait manuellement, mais il y a beaucoup de valeurs différentes possibles pour les parametres, et qui ne sont pas les memes selon chaque identifiant.

    J'ai donc commencé à créer sous VB une fonction qui affiche dans des "colonnes info" les différents parametres possibles pour la case sélectionnée.

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Par défaut [VB Excel] recherche d'une valeur
    Bonjour!
    Malgré mes recherches je n'arrive pas à résoudre mon problème...

    Je n'arrive pas à utiliser la fonction find...
    Je voudrais faire une recherche d'une valeur dans une colonne particulière d'une feuille, et que ca me renvoie le Range des cellules qui ont cette valeur.

    Voila mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim Result As Range
    ActiveWorkbook.Sheets("Tables").Select
    Set Result = Cells.Find(What:=Param)
    Result.Select
    MsgBox ActiveCell.Column             (pour vérifier que ca marche)
    J'obtiens l'erreur "La methode Select de la classe Range a échoué"

    Pouvez vous m'éclairer?

  3. #3
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    Tu pourrais essayer ça :

    Option Explicit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
        Dim j As Integer
        Dim NbLignes As Integer
     
        NbLignes = Worksheets("Feuil1").Range(Worksheets("Feuil1").Range("a1").Address & ":" & Worksheets("Feuil1").Range("a1").End(xlDown).Address).Rows.Count
     
        For j = 1 To NbLignes
            If Worksheets("Feuil1").Range("a1").Offset(j, 0).Value = "param" Then
                MsgBox Worksheets("Feuil1").Range("a1").Offset(j, 0).Address
            End If
        Next j
     
    End Sub
    La recherche se fait donc ds la colonne A en partant de A1 (à adapter selon tes besoins). Dès que le code trouve "param" dans une cellule, il en renvoie l'adresse (tu peux la stocker ds un tableau par exemple ).

    Le code marche bien s'il n'y a pas de case vide dans la colonne A. ds le cas contraire la boucle for sera trop courte (il faudra juste mettre une valeur à la main pour le nombre de lignes)

  4. #4
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    Juste pour savoir ouskel'n'or, si tu exécutes le code que tu donnes ça va te renvoyer seulement la première occurence trouvée, je me trompe?

  5. #5
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    oki pr la boucle.
    Euh ben j'ai relu son msg et il marque :
    Je voudrais faire une recherche d'une valeur dans une colonne particulière d'une feuille
    même si je te l'accorde son code semble dire le contraire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells.Find(What:=Param)

  6. #6
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    Je suis bien d'accord avec toi

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Par défaut
    Pour le multi post, toutes mes excuses ce n'est pas fait dans un mauvais esprit.. Je ne recommencerai plus.

    A propos de la recherche : Je souhaite effectivement la faire dans une colonne particulière. Je n'avais pas mentionnél a possibilité d'occurences multiples car je ne pensais pas en avoir besoin (c'est moi qui rentre les paramètres dans la colonne) mais ca me sera peut etre utile pour arriver à mes fins.

    Je m'en vais tester vos réponses et je vous dis si ca marche ou pas!

    Dans tout les cas MERCI

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

Discussions similaires

  1. Supprimer un lien vers un autre classeur
    Par BiM dans le forum Excel
    Réponses: 3
    Dernier message: 14/03/2008, 21h47
  2. Copie de colonnes vers un autre classeur
    Par Jeyjey1 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/02/2008, 11h14
  3. Exporter des feuilles Excel vers un autre classeur
    Par Smogling dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 28/09/2007, 12h25
  4. [VBA]comment copier une ligne vers un autre classeur
    Par iboulaye1980 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/05/2007, 18h22
  5. [VBA-Excel]Copier des cellules vers un autre classeur
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/10/2006, 18h18

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