Proposer une valeur approchante après une recherche infructueuse
Fermé
Fedaykin7
Messages postés
4
Date d'inscription
mercredi 2 janvier 2013
Statut
Membre
Dernière intervention
3 janvier 2013
-
2 janv. 2013 à 16:46
Fedaykin7 Messages postés 4 Date d'inscription mercredi 2 janvier 2013 Statut Membre Dernière intervention 3 janvier 2013 - 3 janv. 2013 à 16:03
Fedaykin7 Messages postés 4 Date d'inscription mercredi 2 janvier 2013 Statut Membre Dernière intervention 3 janvier 2013 - 3 janv. 2013 à 16:03
A voir également:
- Proposer une valeur approchante après une recherche infructueuse
- Recherche musique - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche adresse - Guide
- Excel associer une valeur à un mot - Forum Excel
6 réponses
Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
2 janv. 2013 à 16:55
2 janv. 2013 à 16:55
Bonsoir Fedaykin7,
Ne serait-il pas plus judicieux de ne faire choisir par l'utilisateur qu'une date existante ?
Plus simple et sans surprise.
Ne serait-il pas plus judicieux de ne faire choisir par l'utilisateur qu'une date existante ?
Plus simple et sans surprise.
Fedaykin7
Messages postés
4
Date d'inscription
mercredi 2 janvier 2013
Statut
Membre
Dernière intervention
3 janvier 2013
2 janv. 2013 à 17:09
2 janv. 2013 à 17:09
Merci de votre réponse
Le problème étant qu'actuellement ma plage fait déjà plus de 500 lignes
De plus j'aimerai que les utilisateurs n'aient pas accès à la plage de données mais juste aux statistiques qu'ils désirent analyser
Le problème étant qu'actuellement ma plage fait déjà plus de 500 lignes
De plus j'aimerai que les utilisateurs n'aient pas accès à la plage de données mais juste aux statistiques qu'ils désirent analyser
Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
2 janv. 2013 à 20:19
2 janv. 2013 à 20:19
Bonsoir Fedaykin7,
Scénario:
- Les données (dates et autres) se trouve sur l'onglet "FeuilleCachee" qui est .. cachée,
- L'utilisateur ouvre le fichier Excel, sur l'onglet "Feuil2",
- A l'activation de cette feuille, un formulaire s'ouvre,
- Sur ce formulaire se trouve une ListBox qui reprend toutes les dates se trouvant sur la feuille cachée.
- L'utilisateur choisi la date, clique sur le bouton "ok" et la suite comme vous l'entendez.
Ceci en VBA (Visual Basic pour Application).
Qu'en pensez-vous?
Scénario:
- Les données (dates et autres) se trouve sur l'onglet "FeuilleCachee" qui est .. cachée,
- L'utilisateur ouvre le fichier Excel, sur l'onglet "Feuil2",
- A l'activation de cette feuille, un formulaire s'ouvre,
- Sur ce formulaire se trouve une ListBox qui reprend toutes les dates se trouvant sur la feuille cachée.
- L'utilisateur choisi la date, clique sur le bouton "ok" et la suite comme vous l'entendez.
Ceci en VBA (Visual Basic pour Application).
Qu'en pensez-vous?
Fedaykin7
Messages postés
4
Date d'inscription
mercredi 2 janvier 2013
Statut
Membre
Dernière intervention
3 janvier 2013
3 janv. 2013 à 06:55
3 janv. 2013 à 06:55
Bonjour
Cette solution me parait moins ergonomique mais surtout j'aimerais comprendre ce qui cloche dans mon code sinon je ne progresserai pas :)
Merci pour le temps que vous prenez à me répondre
Cordialement
Cette solution me parait moins ergonomique mais surtout j'aimerais comprendre ce qui cloche dans mon code sinon je ne progresserai pas :)
Merci pour le temps que vous prenez à me répondre
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
3 janv. 2013 à 12:38
3 janv. 2013 à 12:38
Bonjour Fedaykin7,
Comme je n'ai pas le fichier ..
Les dates dans le fichier, sont-elles considérées comme Date ou comme String ?
Car dans ce code : DateDebut = InputBox("Quelle date de début de calcul des statistiques désirez-vous?") , la valeur retournée par Input est de type String !
Comme je n'ai pas le fichier ..
Les dates dans le fichier, sont-elles considérées comme Date ou comme String ?
Car dans ce code : DateDebut = InputBox("Quelle date de début de calcul des statistiques désirez-vous?") , la valeur retournée par Input est de type String !
Fedaykin7
Messages postés
4
Date d'inscription
mercredi 2 janvier 2013
Statut
Membre
Dernière intervention
3 janvier 2013
3 janv. 2013 à 16:03
3 janv. 2013 à 16:03
Les dates sont considérées en Date
Finalement j'ai trouvé comment faire, c'est un peu tarabiscoté mais ça fonctionne :
D'abord je crée 2 mini macro qui vont tester chacune la présence de la valeur inférieure et supérieure dans la plage de données
Ensuite la macro complète qui va tester la présence de la date désirée dans la plage de données. Si la date désirée est présente, la macro continue son exécution normale, si elle est absente j'aurai tout ce qu'il faut en variables pour lancer mes deux minimacro pour qu'elle trouve une fourchette de dates qui existent dans la plage de données
La macro principale :
Après il reste plein de petites choses à régler, mais ça, ça marche
Merci
Finalement j'ai trouvé comment faire, c'est un peu tarabiscoté mais ça fonctionne :
D'abord je crée 2 mini macro qui vont tester chacune la présence de la valeur inférieure et supérieure dans la plage de données
Sub ValeurInferieure() CptLigne = 4 SJour = Worksheets("Annuel").Cells(CptLigne, 1).Value Do Until CptLigne = CptLignePleine 'ValInf2 est définie comme égale à 0 dans la macro principale, elle change de valeur si la valeur inférieure de la fourchette existe dans la plage de données If ValInf = SJour Then ValInf2 = ValInf CptLigne = CptLigne + 1 SJour = Worksheets("Annuel").Cells(CptLigne, 1).Value Loop End Sub
Sub ValeurSuperieure() CptLigne = 4 SJour = Worksheets("Annuel").Cells(CptLigne, 1).Value Do Until CptLigne = CptLignePleine 'ValSup2 est définie comme égale à 0 dans la macro principale, elle change de valeur si la valeur supérieure de la fourchette existe dans la plage de données If ValSup = SJour Then ValSup2 = ValSup CptLigne = CptLigne + 1 SJour = Worksheets("Annuel").Cells(CptLigne, 1).Value Loop End Sub
Ensuite la macro complète qui va tester la présence de la date désirée dans la plage de données. Si la date désirée est présente, la macro continue son exécution normale, si elle est absente j'aurai tout ce qu'il faut en variables pour lancer mes deux minimacro pour qu'elle trouve une fourchette de dates qui existent dans la plage de données
La macro principale :
Sub Debut() ValInf2 = 0 ValSup2 = 0 'trouve la première ligne vide CptLigne = 4 SJour = Worksheets("Annuel").Cells(CptLigne, 1).Value Do Until SJour = "" CptLigne = CptLigne + 1 SJour = Worksheets("Annuel").Cells(CptLigne, 1).Value Loop CptligneVide = CptLigne CptLignePleine = CptLigne - 1 'CptLignePleine est donc la dernière ligne pleine Adresse = "A" & CptLignePleine Set Plage = Range("A4:" & Adresse) 'Enoncé de la fourchette de dates disponibles et récupération de la date de début de calcul des stats TexteAfficher1 = "Les stats peuvent être calculées à partir du 05/12/2011 jusqu'au " & Worksheets("Annuel").Cells(CptLignePleine, 1).Value & "." & vbCr & "Quelle date de début de calcul des statistiques désirez-vous?" DateDebut = InputBox(TexteAfficher1) 'teste si la valeur de DateDebut dans la plage des dates For Each e In [Plage] If e Like DateDebut Then e.Select 'si oui ça lance la macro qui demande la date de fin de calcul des stats Excel.Run ("Fin") 'si non délimite une fourchette de date encadrant la date désirée Else ValSup = DateDebut + 1 ValInf = DateDebut - 1 End If Next 'teste si la fourchette inférieure existe dans la plage de données Excel.Run ("ValeurInferieure") 'si elle existe pas on élargit la fourchette et on reteste sa présence dans la plage de données (et ce 5 fois car jamais 5 jours d'affilé sans stats) If ValInf2 = 0 Then ValInf = ValInf - 1 Excel.Run ("ValeurInferieure") If ValInf2 = 0 Then ValInf = ValInf - 1 Excel.Run ("ValeurInferieure") If ValInf2 = 0 Then ValInf = ValInf - 1 Excel.Run ("ValeurInferieure") If ValInf2 = 0 Then ValInf = ValInf - 1 Excel.Run ("ValeurInferieure") 'teste si la fourchette inférieure existe dans la plage de données Excel.Run ("ValeurSuperieure") 'si elle existe pas on élargit la fourchette et on reteste sa présence dans la plage de données (et ce 5 fois car jamais 5 jours d'affilé sans stats) If ValSup2 = 0 Then ValSup = ValSup + 1 Excel.Run ("ValeurSuperieure") If ValSup2 = 0 Then ValSup = ValSup + 1 Excel.Run ("ValeurSuperieure") If ValSup2 = 0 Then ValSup = ValSup + 1 Excel.Run ("ValeurSuperieure") If ValSup2 = 0 Then ValSup = ValSup + 1 Excel.Run ("ValeurSuperieure") TexteAfficher2 = "Veuillez choisir une autre date de début" & vbCr & "Les dates les plus proches de la date désirées sont " & ValInf2 & "et " & ValSup2 & "." DateDebut = InputBox(TexteAfficher2) End Sub
Après il reste plein de petites choses à régler, mais ça, ça marche
Merci