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 :

Créer une double condition pour verifier le contenu de 2 colonnes sur une meme ligne


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de yaya_la_rafale
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 92
    Points : 70
    Points
    70
    Par défaut Créer une double condition pour verifier le contenu de 2 colonnes sur une meme ligne
    Bonjour

    j'ai un tableau avec plusieurs colonnes, notamment A et B.
    Je souhaite retourner le numero de la ligne qui contient mes deux valeurs donc un "ET" dans ma condition.

    ma condition est donc "colonne A contient toto" ET "colonne B contient tata"
    Je prefererai ne pas faire de loop de tout le fichier car trop gros.

    dans mon code si dessous, je ne sais faire que la premiere partie de ma condition, comment puis-je y integrer la seconde partie avec un ET (et pas un OU)

    merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set FoundCell = monWs.Range("A:A").Find(what:="toto", lookat:=xlWhole)
    If Not FoundCell Is Nothing Then
        MsgBox ("toto trouvé " & FoundCell.Row)
    Else
        MsgBox ("toto pas trouvé")
    End If
    mais j'aurai voulu doubler ma condition
    Colonne A = "toto" ET colonne B = "tata"
    mais je n'arrive pas a faire ce ET dans ma condition.
    quelqu"un a-t-il une idee ?

  2. #2
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    Coucou,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set FoundCelltata = monWs.Range("B:B").Find(what:="tata", lookat:=xlWhole)
    Set FoundCelltoto = monWs.Range("A:A").Find(what:="toto", lookat:=xlWhole)
     
    If Not FoundCelltoto Is Nothing and not FoundCelltata  is nothing Then
        MsgBox ("toto et tata trouvé " & FoundCell.Row)
        MsgBox (" tata est en " & FoundCelltata.Row)
        MsgBox (" toto est en " & FoundCelltoto.Row)
    Else
        MsgBox ("toto pas trouvé")
    End If
    PS : code pas tester
    N'oublier pas de cliquer sur quand vous avez trouvé une solution qui vous convient.
    Si mon intervention vous a été utile un petit serait sympatique.
    Et si vous avez du temps à consacrer, pensez a venir aider sur le forum.
    C'est en aidant que l'on découvre certaines choses

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonjour,

    utilise Offset pour tester le contenu de ta colonne B..


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set FoundCell = monWs.Range("A:A").Find(what:="toto", lookat:=xlWhole)
    If Not FoundCell Is Nothing Then
       IF FoundCell.Offset(0,1)="tata" then
        MsgBox ("toto et tata trouvé " & FoundCell.Row)
      end if
    Else
        MsgBox ("toto pas trouvé")
    End If

  4. #4
    Membre régulier Avatar de yaya_la_rafale
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    merci mais non cette option n'est pas valable pour moi

    je peux avoir
    Colonne A Colonne B
    toto blahablh
    toto tata
    zerzer tata

    or je ne veux retenir QUE la ligne 2 d'où le ET à ma condition

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    le ET est respecté dans mon code

  6. #6
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    et oui Bbil est c'est le big master xD
    souvient toi yaya_la_rafale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if x < y then 
        if y < z then
     
        end if
    end if
    c'est pareil que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if x < y and y < z then
     
    end if
    et le OU c'est plutot çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if x < y then 
     
    end if
    if y < z then
     
    end if
    ou ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if x < y or y < z then
     
    end if
    N'oublier pas de cliquer sur quand vous avez trouvé une solution qui vous convient.
    Si mon intervention vous a été utile un petit serait sympatique.
    Et si vous avez du temps à consacrer, pensez a venir aider sur le forum.
    C'est en aidant que l'on découvre certaines choses

  7. #7
    Membre régulier Avatar de yaya_la_rafale
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    merci bbil, je n'avais pas vu ta réponse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF FoundCell.Offset(0,1)="tata" then
    mais où est-ce que je spécifie chercher tata sur la colonne B ?

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    tu teste pas pour chaque colonne ou tu as trouvé toto en A tu regarde s'il y as tata dans la cellule présente colonne de droite Offset(0,1) soit la B..

  9. #9
    Membre régulier Avatar de yaya_la_rafale
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    génial ca marche bien.

    mes vraies colonnes sont O et A ce qui est donc pour moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cibleTrouve.Offset(0, -14)
    j'aurai trouvé plus simple de nommer la colonne elle meme, mais bon génial comme ca !
    merci beaucoup !

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par yaya_la_rafale Voir le message
    ...
    j'aurais trouvé plus simple de nommer la colonne elle même, mais bon génial comme ca !
    merci beaucoup !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cibleTrouve.EntireRow.Columns("A")

  11. #11
    Membre régulier Avatar de yaya_la_rafale
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    merci au top !

  12. #12
    Membre régulier Avatar de yaya_la_rafale
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    Bonjour, en fait je reviens sur cette conversation car j'ai un gros doute sur le respect de cette condition "ET" par le offset.... ou alors j'ai mal compris.. (une seule valeur?)

    pour rappel, j'ai 2 feuilles chacune contiennent 2 colonnes qui m'interesse.
    Je veux retrouver celle dont les 2 valeurs de colonnes matchent.
    je fais une boucle sur toute une feuille, et je voudrais eviter de faire a chaque fois une boucle sur toute l'autre feuille dans ma boucle car trop long.
    Du coup, j'ai opté (avec votre aide, merci) pour un truc du style val = sourceTrouve.Offset(0, -11).Value dans la deuxieme boucle... mais ma comprehension etait que ca retourne une liste de tous les elements, et j'ai l'impression que ca ne retourne qu'un seul.

    Par exemple, dans le fichier que j'attache, je verifie si des combinaison ont été supprimées de ma source. j'ai crée un log file qui recupere le tout dans c:\temp
    et voici son contenu :
    SUPPRIME communaute id <BC04> AND community site <C old>
    SUPPRIME communaute id <BC04> AND community site <D>
    SUPPRIME BASE CAMP id <BC10> AND community site <F>


    mais c'est incorrect, car la ligne communaute id <BC04> AND community site <D> existe toujours...

    j'ai peur d'etre obligée de faire une boucle dans ma boucle..
    si vs etes plus inspiré que moi...

  13. #13
    Invité
    Invité(e)

Discussions similaires

  1. Double conditions pour verrouiller une action
    Par ThSPB dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/02/2011, 12h14
  2. Réponses: 0
    Dernier message: 25/01/2010, 14h16
  3. Comment créer une double condition
    Par PPLILH2008 dans le forum Excel
    Réponses: 5
    Dernier message: 24/06/2008, 14h07
  4. ouverture d'un formulaire sur une double condition
    Par mat75019 dans le forum Access
    Réponses: 6
    Dernier message: 27/10/2006, 16h13
  5. Réponses: 8
    Dernier message: 02/05/2006, 16h07

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