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 :

Recherche Date La plus proche d'une valeure saisie. [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 27
    Par défaut Recherche Date La plus proche d'une valeure saisie.
    Bonjour le forum,

    J'ai pas mal tourné sur les différents forums, mais pas moyen de trouver une solution a mon problème .

    J'ai dans ma colonne A une devise, dans la colonne B un taux, dans la colonne C la date à laquelle le taux a été rentré.
    Je cherche à créer un Userform, dans lequel:
    * Dans la combobox1 --> il y a liste des taux (Ca pas de soucis)
    * Dans La Textbox1 --> l'utilisateur saisit une date
    * Dans la Textbox3 --> Affichage automatique du taux de la devise [Le taux doit être celui saisi le plus récemment, mais ne peut pas être postérieur à la date saisie]
    * Dans la Textbox2 --> La date de saisie du Taux en question.

    Comme les dates sont saisies dans par ordre croissant, j'étais partie sur quelque chose comme ça, mais comme vous pouvez le voir, je ne sais pas comment exprimer ma condition que le résultat trouvé ne peut etre postérieur à la date saisie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Textbox1_AfterUpdate()
    
    Dim DateTaux As Date
    
    DateTaux = Application.VLookup(ComboBox1, Range("A2:C10000"), 3, False)
    If DateTaux > TextBox1.Value Then
         XXXXXXXX
    Else
        TextBox2 = DateTaux
    End If
    
    End Sub
    Voilà, si certains préfèrent travailler sur fichier, j'en joint un en Exemple.

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Les UserForm, ce n'est pas ma tasse de thé, mais je te mets en garde : les dates et les TextBox (ou tout ce qui est "text" d'une manière générale), ça ne fait pas bon ménage.
    A moins de prendre de grandes précautions, c'est la cata garantie.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 27
    Par défaut
    Oh .
    Je vais finir par me demander s'il existe une solution du coup.

    Merci quand même d'avoir regardé

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    C'est faisable à condition de traduire la date saisie en TextBox en une vraie date dans les règles de l'art.
    Il y a eu plusieurs sujets sur la transformation de Text en Date avec VBA.
    https://www.developpez.net/forums/d2.../#post11113383
    https://www.developpez.net/forums/d1.../#post10901853

    Pour la partie UserForm, je laisse répondre des participants plus férus que moi sur le sujet.

  5. #5
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour le fil, bonjour le forum,

    Peut-être comme ça. Remplace ton code par celui-ci :

    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
    33
    34
    35
    36
    37
    Option Explicit 'oblige a déclarer toutes les variables
    Private TV As Variant 'déclare la variable TV(Tableau des Valeurs)
     
    Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
    Dim O As Worksheet 'déclare la variable O (Onglet)
    Dim D As Object 'déclare la variable D (Dictionnaire)
    Dim I As Integer 'déclare la variable I (Incrément)
     
    Set O = Worksheets("Feuil1") 'définit l'onglet O
    Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
    TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
    For I = 2 To UBound(TV, 1) 'boucle sur toutes les ligne I du tableau des valeur (en partant de la seconde)
        D(TV(I, 1)) = "" 'alimente le dictionnaire D avece les données de la colonne 1 de TV
    Next I 'prochaine ligne de la boucle
    Me.ComboBox1.List = D.keys 'alimente la Combobox1 avec la liste des éléments du dictionnaire D sans doublon
    End Sub
     
    Private Sub TextBox1_AfterUpdate() 'à l'actualisation de la TextBox1
    Dim DT As Long 'déclare la varialbe DT (Date de la Textbox)
    Dim DL As Long 'déclare la varialbe DL (Date de la Ligne)
    Dim DM As Long 'déclare la varialbe D'M (Date Maximum)
    Dim I As Integer 'déclare la variable I (Incrément)
    Dim T As Double 'déclare la variable T (Taux)
     
    DT = CLng(DateSerial(Year(Me.TextBox1.Value), Month(Me.TextBox1.Value), Day(Me.TextBox1.Value))) 'définit la date de la TextBox DT (en entier long)
    For I = 2 To UBound(TV, 1) 'boucle sur toutes les ligne I du tableau des valeurs (en partant de la seconde)
        DL = CLng(DateSerial(Year(TV(I, 3)), Month(TV(I, 3)), Day(TV(I, 3)))) 'définit la date de la ligne DL (en entier long)
        If TV(I, 1) = Me.ComboBox1.Value Then 'condition 1 si la donnée de la ligne de la boucle en colonne 1 est égale à la valeur de la ComboBox1
            If DL > DM And DM < DT Then 'condition 2 : si la date de la ligne DL est supérieure à la date max DM et si elle est inférieure à la date de la TextBox DT
                DM = DL 'la date Max DM devient la date de la ligne
                T = CDbl(TV(I, 2)) 'le taux T devient le taux de la ligne de la boucle
            End If 'fin de la condition 2
        End If 'fin de la condition 1
    Next I 'prochaine ligne de la boucle
    Me.TextBox2.Value = CDate(DM) 'renvoie la date DM dans la TextBox2
    Me.TextBox3.Value = T 'renvoie le taux T dans la TextBox3
    End Sub

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 27
    Par défaut
    Bonjour Thautheme,

    Merci beaucoup pour cette solution qui s'approche grandement de ce que je recherche (Et pour toutes les annotations du code!)
    Je vois que le résultat n'est pas toujours celui attendu, mais je vais essayer d'arranger ça, tu m'a donné les grandes lignes nécéssaires !

    Simple question, je ne vois pas de définition de ce à quoi corresponds BM.
    C'est moi qui ai raté la lecture d'une ligne ?
    Peux-tu m'éclairer ?

    Merci d'avance!

    Et Merci pour les liens Menhir

  7. #7
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Re,

    Ce n'est pas BM mais DM, la Date Max qui est déclarée en ligne 21 et définie dans la ligne 30...

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je propose une démarche différente, qui s'appuie sur une conception de classeur correcte.
    1. Un tableau structuré contenant la liste des devises ordonnées par ordre croissant (voir mon tuto sur https://fauconnier.developpez.com/tu...ux-structures/
    2. Un tableau structuré contenant les cours par devise et par jour (Devise, taux, date) triés par devise puis par date croissante.


    A ce stade, on peut déjà trouver le taux de la date inférieure la plus proche avec une combinaison INDEX EQUIV en matricielle
    Nom : 2019-10-14_175633.png
Affichages : 853
Taille : 9,8 Ko

    Après, sur base d'un userform contenant:
    1. cboCurrency, liste déroulante alimentée par le tableau des devises;
    2. tboDate, Textbox qui sera alimenté par l'utilisateur;
    3. tboRate, qui sera alimenté par une fonction qui calcule le taux;
    4. btnValidate, bouton qui appellera le calcul.



    Le userform est initialisé par une procédure d'un module standard:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test()
      With UserForm2
        .cboCurrency.List = Range("t_Devises[devise]").Value
        .Show
      End With
    End Sub
    Dans le Userform, le code suivant qui se sert de EVALUATE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
     
    Private Sub btnValidate_Click()
      CalculateRate
    End Sub
     
    Sub CalculateRate()
      Dim Formula As String
     
      Formula = "=IFERROR(INDEX(t_Taux[Taux],MATCH(1,(t_Taux[Devise]=""{currency}"")*(t_Taux[Date]={date}),1)),""N/A"")"
      Formula = Replace(Replace(Formula, "{currency}", cboCurrency.Value), "{date}", CDate(tboDate.Value) * 1)
      tboRate.Value = Evaluate(Formula)
    End Sub

    Pour moi, reconstruire la liste des devises avec un dictionnaire ou autre révèle un problème de conception. Cette liste doit préexister à l'utilisation du formulaire et c'est sur cette liste que l'on s'appuie, quitte à vider le tableau et à la recréer. Il faudrait idéalement retrier les taux avant l'appel du userform pour que EVALUATE fonctionne. Il faudra aussi s'assurer que la valeur saisie dans tboDate est bien une date valide. Mais cela se fait en sériant les problèmes et en les divisant en petits morceaux (procédures et fonctions qui ne font qu'une chose). Idéalement, le calcul du taux devrait être déporté hors du userform, car ce n'est pas le rôle du userform d'effectuer le calcul...

    Pour ce qui est de la transformation de texte saisi dans un userform en date, il n'y a rien de magique ou d'aléatoire dans la démarche.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 27
    Par défaut
    Rebonjour à vous,

    J'ai adapté la solution de Thautheme, j'arrive à ce résultat:

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Option Explicit 'oblige a déclarer toutes les variables
    Private TV As Variant 'déclare la variable TV(Tableau des Valeurs)
     
    Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
    Dim O As Worksheet 'déclare la variable O (Onglet)
    Dim D As Object 'déclare la variable D (Dictionnaire)
    Dim I As Integer 'déclare la variable I (Incrément)
     
    Set O = Worksheets("Feuil1") 'définit l'onglet O
    Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
    TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
    For I = 2 To UBound(TV, 1) 'boucle sur toutes les ligne I du tableau des valeur (en partant de la seconde)
        D(TV(I, 1)) = "" 'alimente le dictionnaire D avece les données de la colonne 1 de TV
    Next I 'prochaine ligne de la boucle
    Me.ComboBox1.List = D.keys 'alimente la Combobox1 avec la liste des éléments du dictionnaire D sans doublon
    End Sub
     
    Private Sub TextBox1_AfterUpdate() 'à l'actualisation de la TextBox1
    Dim DT As Long 'déclare la varialbe DT (Date de la Textbox)
    Dim DL As Long 'déclare la varialbe DL (Date de la Ligne)
    Dim DM As Long 'déclare la varialbe D'M (Date Maximum)
    Dim I As Integer 'déclare la variable I (Incrément)
    Dim T As Double 'déclare la variable T (Taux)
     
    DT = CLng(DateSerial(Year(Me.TextBox1.Value), Month(Me.TextBox1.Value), Day(Me.TextBox1.Value))) 'définit la date de la TextBox DT (en entier long)
    For I = 2 To UBound(TV, 1) 'boucle sur toutes les ligne I du tableau des valeurs (en partant de la seconde)
        DL = CLng(DateSerial(Year(TV(I, 3)), Month(TV(I, 3)), Day(TV(I, 3)))) 'définit la date de la ligne DL (en entier long)
        If TV(I, 1) = Me.ComboBox1.Value Then 'condition 1 si la donnée de la ligne de la boucle en colonne 1 est égale à la valeur de la ComboBox1
            If DL <= DT And DL > DM Then 'condition 2 : si la date de la ligne DL est supérieure à la date max DM et si elle est inférieure à la date de la TextBox DT
                DM = DL 'la date Max DM devient la date de la ligne
                T = CDbl(TV(I, 2)) 'le taux T devient le taux de la ligne de la boucle
            End If 'fin de la condition 2
        End If 'fin de la condition 1
    Next I 'prochaine ligne de la boucle
     
    If DM = 0 Then
    Me.TextBox2.Value = "Pas de data"
    Me.TextBox3.Value = "Pas de data"
    Else
    Me.TextBox2.Value = CDate(DM) 'renvoie la date DM dans la TextBox2
    Me.TextBox3.Value = T 'renvoie le taux T dans la TextBox3
    End If
     
    End Sub
    A priori, après plusieurs tests sur plusieurs devises, ce code fonctionne parfaitement. Merci pour l'aide Thautheme !

    @Pierre Fauconnier, ton premier lien me ramène à une erreur not found, alors qu'il m’intéresse beaucoup.
    Et merci beaucoup pour tous ces codes, je vais les essayer tout de suite !
    Je me doute bien que mon classeur est loin d'être optimisé. Le pire, c'est que vous n'aviez ici qu'un exemple. Le vrai fichier sur lequel je dois travailler contient bien plus de colonne, d'informations, et tout est en désordre.
    Je ne savais même pas qu'il existait des macros pour faire des tris
    Je vais faire au mieux avec ces éléments, merci encore.

    Je ne savais pas qu'une variable déclarée comme long était égale à 0 si elle n'était pas définie.
    Effectivement, c'était bien ce point qui posait mon incompréhension.

    @Docmarti, j'étais fière d'avoir su rectifier ce point seule, mais merci pour ton aide haha!

    Merci pour votre aide à tous !

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Pour compléter mon propos...

    Voici les codes pour:
    • trier la liste des taux sur la devise puis la date;
    • recréer la liste des devises triées et sans doublons;
    • vérifier qu'une date a bien été saisie (La fonction est minimaliste et tient compte, d'abord, des paramètres régionaux, on peut faire plus compliqué);
    • déporter le calcul du taux hors du userform.



    On voit que ces codes sont indépendants du userform, car ce n'est pas de la responsabilité de ce dernier de traiter tout cela.

    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
    Function GetRate(Cur As String, RateDate As Date) As Variant
      Dim Formula As String
     
      Formula = "=IFERROR(INDEX(t_Taux[Taux],MATCH(1,(t_Taux[Devise]=""{currency}"")*(t_Taux[Date]={date}),1)),""N/A"")"
      Formula = Replace(Replace(Formula, "{currency}", Cur), "{date}", CDate(RateDate) * 1)
      GetRate = Evaluate(Formula)
    End Function
     
     
    Sub SortRates()
      With Range("t_taux").ListObject.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("t_taux[Devise]"), SortOn:=xlSortValues, Order:=xlAscending
        .SortFields.Add Key:=Range("t_taux[Date]"), SortOn:=xlSortValues, Order:=xlAscending
        .Apply
      End With
    End Sub
     
    Sub CreateCurrenciesList()
      If Not Range("t_Devises").ListObject.DataBodyRange Is Nothing Then Range("t_Devises").ListObject.DataBodyRange.Delete
      Range("t_Taux[Devise]").Copy Destination:=Range("t_devises[devise]")
      Range("t_devises").RemoveDuplicates 1
      With Range("t_Devises").ListObject.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("t_Devises[devise]"), SortOn:=xlSortValues, Order:=xlAscending
        .Apply
      End With
    End Sub
     
    Function StringToDate(Value As String) As Date
      If IsDate(Value) Then StringToDate = CDate(Value)
    End Function
    Dès lors, le lancement du userform est adapté pour préparer les listes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
      SortRates
      CreateCurrenciesList
      With UserForm2
        .cboCurrency.List = Range("t_Devises[devise]").Value
        .Show
      End With
    End Sub
    Le userform est lui aussi adapté pour utiliser les fonctions du module standard
    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
    Option Explicit
     
    Private Sub btnValidate_Click()
      If DatasAreOk Then
        Calculate
      Else
        MsgBox "Le calcul n'a pu être effectué. Veuillez vérifier vos saisies"
      End If
    End Sub
     
    Sub Calculate()
      tboRate = GetRate(cboCurrency.Value, CDate(tboDate) * 1)
    End Sub
     
    Function DatasAreOk() As Boolean
      Dim DateValue As Date
     
      DateValue = StringToDate(tboDate.Value)
      DatasAreOk = DateValue <> 0
    End Function
    Fichiers attachés Fichiers attachés
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    J'ai corrigé le lien dans mon message d'origine. Je te le remets ici: https://fauconnier.developpez.com/tu...ux-structures/

    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. [XL-2007] Recherche date la plus récente sur une base de données
    Par BERRACHED SAID dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/03/2017, 16h35
  2. Réponses: 4
    Dernier message: 18/03/2016, 17h27
  3. Réponses: 8
    Dernier message: 27/10/2015, 16h50
  4. [XL-2007] Recherche date la plus proche d'aujourd'hui
    Par XceSs dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2013, 02h28
  5. Recherche date la plus proche
    Par Marius76 dans le forum IHM
    Réponses: 8
    Dernier message: 14/02/2011, 15h19

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