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 :

Realiser une recherche sur une variable "range"


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 71
    Points : 31
    Points
    31
    Par défaut Realiser une recherche sur une variable "range"
    Bonjour j'aimerais réaliser une condition en vba:


    Voila le principe:
    Je possède une variable de type range (appelé TATA) qui n'est pas fixe (pas fixe, cad que le nombre d'information dans la variable range peut être plus ou moins grand, il n'est pas connu)

    Et je voudrais creer cette condition:
    - exécuter le "programme A" lorsque l'une des informations information de la variable range "TOTO" est identique à la cellule A3
    - si l'information de la cellule A3 n'est pas compris dans la variable TOTO, je passe à la cellule du dessous A4 et ainsi de suite jusqu a que je trouve la bonne cellule


    Avez vous idee pour faire la recherche sur les variables de type range?.

    Merci

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Je possède une variable de type range (appelé TATA)
    cette variable représente donc une plage de cellule, dans ce cas tu peux boucler sur ta plage (pas testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for each Macellule in tata
    for i = 1 to cells(65536,1).end(xlup).row
    if Macellule.value = cells(i,1) then 
    programme1
    end if
    next i
    next macellule

    Edit : bonsoir, pas sur d'avoir compris, mais parfois une réponse lance les explications...

  3. #3
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour Esmax666 le forum pas claire tous ca. donne plus de details si tu veus quelqu'un t aide ou quelqu' une beaucoup de possibilitées une boucle , find evenementielle , tablo, ect...

    ps oups bonjour alex plus vif que moi pour comprendre a+ leti

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    ici je dois rajouter une variable "macellule"?
    Je renseigne ou la cellule A3 car je ne souhaite pas realiser la recherche dés la première ligne, mais la 3eme

    Pour être clair dans une feuille excel je réalise plusieurs filtre et ensuite il me reste encore 3-4 lignes
    j'ai besoin que d'une ligne et de la bonne.
    Pour savoir quelle ligne est la bonne je dois encore realiser une recherche sur les cellules de la colonnes A à partir de la ligne 3
    Pour realiser la recherche il faut que que regarde chaque cellule A3 puis A4 pour savoir si la valeur de la cellule A4 est contenu dans le range TOTO
    et si oui je continu mon programme (pour faire un copier)
    et si non je continu sur la cellule d en dessous


    Voila Merci

  5. #5
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonsoir,

    comme le dit Laetitia détail nous un peu ce que tu veux faire.

    Je renseigne ou la cellule A3 car je ne souhaite pas realiser la recherche dés la première ligne, mais la 3eme
    Tu remplaces ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i = 3 to cells(65536,1).end(xlup).row
    if Macellule.value = cells(i,1) then
    Edit : si tu as un peu de code n'hésite pas a donner des exemples

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    voila j'ai un peu detaillé, desolé si je m'exprime mal :/

  7. #7
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Dans ce cas le mieux serait peut être de faire une boucle sur ton range et de faire un find pour trouver la cellule correpondante.

    PS: Je doit y aller a+.

    Edit:
    voila j'ai un peu detaillé, desolé si je m'exprime mal
    Aucun soucis, le tout pour avancer est que l'on arrive a bien comprendre.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    J'ai pas trop compris la methode

    Alors pour detailler le plus possible
    Je possède sur ma "feuilleA" des références que je souhaite sauvegarder sous la variable range "TOTO". les variable que je souhaite sauvegarder ont un nombre de ligne aleatoire alors voila ce que je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sheets(feuilleA).Activate
    DerniereligneA = Range("C65536").End(xlUp).Row
    For Num = 7 To DerniereligneA
        Liste(Num) = Cells(Num, 3).Value
    Next Num
    ensuite je passe a la feuilleB je realise des filtre et il me reste 3-5 ligne (c'est aleatoire)
    et parmi ces lignes je souhaiterais faire une recherche sur la cellule A3, cad que je regarde si la valauer de la cellule A3 est identique a l'une des valeur enregisterer dans le range

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Windows(feuilleB).Activate
    for i = 3 to cells(65536,1).end(xlup).row
    ....
    -----------------------------

    Si pense avoir trouvé une methode plus simple

    Methode 2
    Réaliser un filtre sur l'ensemble des variable du range? cela est possible?
    Je viens de trouver une fonction pour creer un filtre sur 2 variable, a voir si cela est possible d'augmenter le nombre de variable?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Selection.AutoFilter Field:=13, Criteria1:="=*AA*", Operator:=xlOr, _
            Criteria2:="=*BB*"

  9. #9
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Un exemple perso avec Find à adapter :


    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
    Set MaPlage = F1.Range("F2", Range("F65536").End(xlUp))
     
    For Each MaCellule In MaPlage
     
        MaRecherche = MaCellule.Value
     
        With F2.Columns("D:D")
            Set cell = .Find(What:=MaRecherche, LookIn:=xlValues, LookAt:=xlPart)
        End With
        If Not cell Is Nothing Then
        Dim i As Integer
            For i = 1 To 30
             MaCellule.Offset(, 15 + i).Value = F2.Cells(cell.Row, MaColonne.Column + i)
            Next
        End If
     
    Next MaCellule

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    ok merci je vais voir ca,
    mais la methode avec le filtre n'est pas plus simple ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Selection.AutoFilter Field:=13, Criteria1:="=*'Liste(7)'*", Operator:=xlOr, _
    Criteria2:="=*'Liste(8)'*", Operator:=xlOr, _
    Criteria2:="=*'Liste(9)'*"

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. [RegEx] souci sur une recherche dans une chaine
    Par fey dans le forum Langage
    Réponses: 8
    Dernier message: 21/10/2009, 15h58
  3. effectuer une recherche sur une requête en windev
    Par tytyone554 dans le forum Développement
    Réponses: 0
    Dernier message: 09/10/2009, 16h48
  4. une requete effectuant une recherche sur tous les champs
    Par raynor911 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/02/2006, 15h06

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