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 :

Utilisation de la Fonction Find [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Par défaut Utilisation de la Fonction Find
    Bonjour,

    Dans l'extrait de fichier ci-après, je voudrais chercher la variable "AChaineDate", mais la recherche s'effectue toujours depuis le début de la colonne
    S'il y a 2 variables identiques, je voudrais chercher la deuxième et non la première et ainsi de suite
    Une sorte d' incrémentation
    Merci de m'aider Cordialement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     If strSeparateur = "/" And Right(AChaineDate, 4) > 1900 Then
        Dim Ligne, An
        DateRepublicaine = Left(AChaineDate, 6)
        Ligne = Columns(2).Find(AChaineDate, lookat:=xlWhole).Row
        An = Cells(Ligne, 1).Value
        DateRepublicaine = DateRepublicaine & An
        Exit Function
     End If

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 138
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 138
    Par défaut
    Bonjour,
    Citation Envoyé par dan03 Voir le message
    je voudrais chercher la deuxième et non la première et ainsi de suite
    Il suffit d'utiliser la fonction adéquate dont tu as un exemple chez microsoft
    https://docs.microsoft.com/fr-fr/off...6)%26rd%3Dtrue

  3. #3
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Par défaut Utilisation de la Fonction Find
    Bonjour,
    Merci de ta réponse
    En fait, je voudrais utiliser la fonction Find, mais en ajoutant l'argument After
    Comme je suis débutant en VBA, je n'ai pas réussi à utiliser cet argument
    Merci de transformer mon code, avec quelques explications
    Cordialement

  4. #4
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour,

    (sans être certain d'avoir bien cerné le problème)

    Et avec cette Info : "S'il y a 2 variables identiques, je voudrais chercher la deuxième et non la première et ainsi de suite"
    Donc si 3 identiques la 3em, 4 identiques la 4em,... soit : qu'il faudrait simplement trouver la dernière ligne de la colonne B contenant la date en question ?

    Suivant cette hypothèse, si la date est 01/01/2020 , ce code retourne la dernière ligne de la colonne B où l'on retrouve la date 01/01/2020.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub FindLastRowContainSpecificDate()
     
     Dim LastRowPFW As Long
     Dim MyDate  As Date
     
      MyDate = "01/01/2020"
      If WorksheetFunction.CountIf(Range("B:B"), CDate(MyDate)) > 0 Then LastRowPFW = Range("B:B").Find(what:=CDate(MyDate), after:=Range("B1"), searchdirection:=xlPrevious).Row
     
      MsgBox LastRowPFW
     
    End Sub
    Ce qui donnerai dans le bout de code que tu as fournis ( et pour peu que ta colonne soit en format date) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     If strSeparateur = "/" And Right(AChaineDate, 4) > 1900 Then
        Dim Ligne as long
        Dim An as Integer
        Dim DateRepublicaine as String
     
        DateRepublicaine = Left(AChaineDate, 6)
     
          If WorksheetFunction.CountIf(Range("B:B"), CDate(AChaineDate)) > 0 Then Ligne= Range("B:B").Find(what:=CDate(AChaineDate), after:=Range("B1"), searchdirection:=xlPrevious).Row
        An = Cells(Ligne, 1).Value
        DateRepublicaine = DateRepublicaine & An
        Exit Function
     End If
    Attention aussi a bien typer tes variables

  5. #5
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 138
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 138
    Par défaut
    Bonjour,

    Si tu veux avoir la ligne la plus grande de la date cherchée comme pense mfoxy (salue à toi), il suffit de paramétrer la fonction "find" comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Ligne = Columns(2).Find(AChaineDate, Cells(Rows.Count, 2), xlValues, xlWhole, xlByRows, xlPrevious).Row
    La recherche se fait depuis le bas sur les lignes de la colonne de recherche.

    Si par contre tu veux parcourir toutes les valeurs il faut utiliser "findnext" comme dans l'exemple que je t'ai donné sur Microsoft.

  6. #6
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Par défaut
    Cela ne résout pas mon problème
    J'ai du mal le présenter
    Je vais totalement modifier le code pour éviter cette procédure
    Merci à tous ceux qui m'ont aidé
    Je mets le post en résolu

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

Discussions similaires

  1. [XL-2010] utilisation de la fonction "find"
    Par vwtroudy dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 09/07/2015, 11h52
  2. [XL-2007] Utilisation de la fonction Find (novice)
    Par alex311278 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/02/2015, 09h41
  3. [XL-2010] Utilisation de la Fonction find
    Par tompom3108 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/02/2012, 07h56
  4. [Débutant] Utilisation de la fonction find sur l'element Cell.
    Par george33 dans le forum MATLAB
    Réponses: 2
    Dernier message: 07/11/2011, 14h18
  5. Utilisation de la fonction find
    Par ylabarre dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 29/08/2007, 16h02

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