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 :

test de doublon et recuperation N° de ligne [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Par défaut test de doublon et recuperation N° de ligne
    Bonjour le Forum

    Dans mon appli , je procede au test de doublon dans une feuille ( BASE )par le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Retour = Evaluate("sumproduct(('BASE'!U3:U65000<>"""")*('BASE'!Q3:Q65000=""" & ComboBox3 & """)*1)")
        If Retour <> 0 Then
          MsgBox " Contenant N° " + ComboBox3 + " est déjà emprunté ! "
          Exit Sub
        End If
    ceci marche très bien mais la fonction "Evaluate" me renvoie un 1 ou 0 si la occurrence est trouvée
    Ce que cherche à faire :
    c'est effectivement trouvé l'existence d'un doublon ( Retour ) mais en même temps , permettre de récupérer le N° de ligne associé à cet occurrence

    comment puis-je faire ?

    Merci par avance de vos conseils
    A+

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    si j'ai bien compris, tu cherches si la valeur de combobox3 existe déjà dans la col U ou dans la colonne Q.
    sans avoir testé, essayes 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
    Dim retour As Range, x As Long
    x = Sheets("BASE").Range("U" & Sheets("Base").Rows.Count).End(xlUp).Row
    Set retour = Sheets("BASE").Range("U3:U" & x).Find(ComboBox3)
    If Not retour Is Nothing Then
       MsgBox " Contenant N° " + ComboBox3 + " est déjà emprunté ! à la ligne " & retour.Row
       Exit Sub
    Else
       Set retour = Sheets("BASE").Range("q3:q" & x).Find(ComboBox3)
       If Not retour Is Nothing Then
          MsgBox " Contenant N° " + ComboBox3 + " est déjà emprunté ! à la ligne " & retour.Row
          Exit Sub
       End If
    MsgBox "pas de problèmes de doublons"
    End If
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Par défaut RE..
    Tout d'abord merci casefayere

    si j'ai bien compris, tu cherches si la valeur de combobox3 existe déjà dans la col U ou dans la colonne Q.
    En fait , ce n'est pas tout à fait cela ,
    je cherche dans la colonne Q le résultat de mon choix ( ici combobox3 )
    et je regarde dans la colonne U si j'ai ou pas quelque chose dedans

    si retour = 1 , j'ai un emprunt déjà en cours sur le contenant
    si retour = 0 , je peux faire l'emprunt sur ce contenant

    c'est pour cette raison que je suis parti vers la fonction EValuate qui repond
    à ma demande ( en revoyant un etat à 1 si je trouve) mais je n'arrive pas à identifier la ligne où se situe l'occurrence ( en fait c'est pour pouvoir ensuite récupérer la date d'emprunt inscrite en colonne U)
    Comme je teste sur l'ensemble du fichier je pourrai relancer une deuxième recherche pour identifier la ligne mais cela ralentirait beaucoup l'appli ..


    merci encore
    A+

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    et si on travaille pas à pas, déjà cette phrase :
    je cherche dans la colonne Q le résultat de mon choix ( ici combobox3 )
    donc le résultat de ton choix est censé exister, si tel est le cas, au départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    '"x" est la derniere ligne de ton tableau, à adapter
    Set retour = Sheets("BASE").Range("q3:q" & x).Find(ComboBox3)
       If Not retour Is Nothing Then
          MsgBox " Contenant N° " + ComboBox3 + " est à la ligne " & retour.Row
          Exit Sub
       End If
    et je regarde dans la colonne U si j'ai ou pas quelque chose dedans
    c'est quoi quelquechose, un texte quelconque ?, le texte de ta combobox ?
    dans la colonne u à la meme ligne ?

    excuses-moi, je suis peut-être bouché mais j'aime comprendre exactement

    a +
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    une derniere propositin si, à tout hasard, j'ai compris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim retour As Range, x As Long, b As Long
    'attention, ci-dessous je prends U pour la derniere colonne, peut-etre prendre une autre
    x = Sheets("BASE").Range("U" & Sheets("Base").Rows.Count).End(xlUp).Row
    For b = 3 To x
    Set retour = Sheets("BASE").Range("q" & b, "q" & x).Find(ComboBox3)
    If Not retour Is Nothing Then
       If Sheets("BASE").Range("U" & retour.Row) <> "" Then
          MsgBox " Contenant N° " + ComboBox3 + " est déjà emprunté ! à la ligne " & retour.Row
          Exit For
       Else
       'suite instructions
       End If
    End If
    Next b
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Par défaut
    Sincèrement casefayere je loue tes efforts
    de compréhension de mon problème
    et effectivement après relecture c'est pas clair tout çà !!

    excuses-moi, je suis peut-être bouché mais j'aime comprendre exactement
    excuses-moi,c'est peut-être effectivement mon explication qui ne va pas
    1) en colonne Q je recherche dans ma feuille, l'existence de la donnée
    2) en colonne U je regarde l'existance d'une autre donnée ( ici une date )
    3) la conjonction ( = retour ) des 2 données me donne le resultat = 1 et =0 si la colonne U est vide
    de fait je sais que l'emprunt du contenant est impossible si retour=1 et possible si le retour =0
    selon ta proposition , je teste l'existence de Q puis ensuite avec la boucle
    For.. Next l'existence de U
    je pensais que la fonction Evaluate pouvait peut-être me fournir en même temps le N° de ligne mais çà ne semble pas possible

    Mille pardons encore pour le défaut d'explication ...
    A+

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

Discussions similaires

  1. recuperer la derniere ligne d'une table
    Par Adren dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/03/2007, 16h11
  2. [Tableaux] Récupérer la dernière ligne du tableau
    Par cadoudal56 dans le forum Langage
    Réponses: 3
    Dernier message: 02/12/2006, 23h28
  3. Réponses: 8
    Dernier message: 26/10/2006, 11h19
  4. [VBA-E]test sur le contenu de toute une ligne
    Par repié dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/02/2006, 16h00
  5. [C#]Recuperer valeur de ligne dans un datagrid
    Par kenzo080 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 24/06/2005, 05h07

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