[VBA] Identifier une date la + proche de fin de mois
altarez
Messages postés21Date d'inscriptionmardi 24 janvier 2006StatutMembreDernière intervention 4 juin 2009
-
26 mai 2006 à 11:43
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
28 mai 2006 à 20:17
Bonjour à tous,
Voila, je cherche un code VBA qui identifie parmis un liste de date, celle qui se rapporche le plus de la fin du mois.
voici comment se compose le fichier Excel :
col A | col B | abc0101 29/05/06
abc0101 30/05/06
abc0101 01/06/06
dec0208 26/05/06
dec0208 02/06/06
xyzd253 22/05/06
xyzd253 05/06/06
Comme vous pouvez le voir, en colonne A il y a plusieurs "nom" differents, je cherche donc à identifier la date pour chaque "nom" la plus proche (en nombre de jour ouvrés) de la date de fin de mois (ici :31/05/2006) et afficher en colonne C le resultat.
Merci a tous ceux qui pourront m'aider, et n'hesitez pas à me demander si je n'ai pas été assez explicite.
cs_vpoyo
Messages postés363Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention20 avril 20106 26 mai 2006 à 11:53
En gros l'algo est le suivant :
pour chaque valeur dans la colonne B
récupérer le texte et le convertir en date
si le mois et l'année sont égals à ce de la date du jours (now) alors
comparer le jour avec le tmpDate et s'il est plus grand alors remplacer tmpdate par la valeur courante
une fois tous les éléments parcouru on renvoie le nom de la colonne A correspondant a la cellule de B qu'on a déterminé
altarez
Messages postés21Date d'inscriptionmardi 24 janvier 2006StatutMembreDernière intervention 4 juin 20094 26 mai 2006 à 13:30
Merci de ta réponse.
Ca me parit pas trop mal, mais j'ai du mal a visualisé comment ca fonctionne et comment le retranscrire.
est-ce que dans ton algo il est prévu de differencier les differents noms?
Dans mon exmple il y a 3 noms (code) differents dans la colA, a la fin du traitement j'aurai donc logiquement un resultat de 3 dates (1 par code)
cs_vpoyo
Messages postés363Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention20 avril 20106 26 mai 2006 à 13:40
tout dépend de ce que tu veux :)
tu peux soit prendre le premier élément de la liste, pour celà il faut faire un test strictement plus grand ; soit le dernier il faut faire un plus grand ou égal.
sinon si tu les veux tous ben là ca se complique un petit peu car il faut faire un tableau et gérer l' "agrandissement" de celui-ci.
pour la retranscription je t'avouerais que je fais pas de vba. mais avec un bon tuto sous la main pour savoir récupérer les valeurs d'une colonne, faire une boucle (do while, for) et hop le tour est joué :)
altarez
Messages postés21Date d'inscriptionmardi 24 janvier 2006StatutMembreDernière intervention 4 juin 20094 27 mai 2006 à 12:30
Merci pour le truc des dates, c'est bon a savoir.
Mais je pense pas que ca puisse m'aider dans ce que je cherche a faire.
vpoyo : Je suis un peu perdu la ;)
En language VBA je pensais faire :
tant que (monCode) est identique
alors fait le calcul "maDate"
Sinon passe a la ligne suivante
maDate serai une procedure VBA qui calcule le jour le plus proche de fin de mois
(monCode) serai une variable qui stockerai le code actuel.
genre: monCode = Activecell.text
A la fin j'aurai un truc comme ça :
col A | col B | col C
BBBBBBB 29/05/06
BBBBBBB 30/05/06 correct
BBBBBBB 01/06/06
PPPPPPP 26/05/06
PPPPPPP 02/06/06 correct
xyzd253 22/05/06
xyzd253 05/06/06 correct
AAAAAAA 30/05/06
AAAAAAA 31/05/06 correct
AAAAAAA 01/06/06
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 28 mai 2006 à 20:17
Oui c'est possible.
Je veux bien t'aider sur le code mais il me faut une précision car je ne comprends pas ton critère de recherche.
Tu souhaites chercher les dates les + proches du dernier jour mais dans quel interval de date ?
(car un moment tu mets "correct" au 30/05, au 02/06, au 05/06 et au 30/05 ; par contre tu délaisses le 01/06 & le 30/05 vers la fin de liste de ton exemple)
Merci pour tes petites précisions !
@++
Mortalino
Le Mystérieux Chevalier "Provençal, le Gaulois"