VBA Excel - Date sous forme de numéro de série

cdivad

XLDnaute Nouveau
Bonjour,

J'ai actuellement besoin de rentrer dans une variable le numéro de série d'une date.

J'ai en effet une date préalable, a laquelle je veux ajouter 5 jours, et ne pas avoir à me casser la tete pour l'incrémenter (si on est le 30 avril par exemple, il faudra incrémenter le mois... donc je préfère passer par la date en tant que numéro de série, a laquelle j'ajouterais 5, ce qui me donnerait la date du jour J+5).

Cependant, j'ai beau chercher partout, pas moyen de trouver comment convertir une date au format jj/mm/aaaa en son numéro de série correspondant, a part en copiant dans une autre cellule et en mettant en forme "General" avec le

Code:
Range("a1").NumberFormat = "'General"
(si la date en question est dans la cellule a1, bien sur...vous m'avez compris...)

Mais je ne veux pas repasser par la feuille excel, je souhaite que cela rentre dans une variable nommée DatePlusCinq, que je transformerai par la suite a nouveau en date au format jj/mm/aaaa...

J'espere avoir été clair, j'ai tout fait pour l'etre le plus possible...

Merci d'avance de votre réponse!! ^^
 

cdivad

XLDnaute Nouveau
Re : VBA Excel - Date sous forme de numéro de série

Hello!!

Merci beaucoup, ta méthode fonctionne à merveille ^^ (dire que je galere depuis deux heures à chercher sur google au cas ou...)

Par contre, pour que ca réponde exactement à ce que je disais, voilà le code (qui ne diffère que très peu de ce que tu as envoyé ;) ):

Code:
Dim NbJours As Long, DatePlusCinq As Date

NbJours = CLng(Range("A1").Value)
DatePlusCinq = CDate(NbJours + 5)


Voilà, premier post, problème réglé en même pas dix minutes... je reviendrai!! lool!

Merci encore beaucoup, et bonne aprem!


---------------------------------------------------
(up)
PS: Voici mon code final, puisque le but de ma macro est en fait de déterminer la date du cinquième jour ouvré qui suit la date de la négociation... Dans l'hypothèse que ca pourrait en aider d'autres...

Code:
Sub date_nego_plus_cinq_jours_ouvres()


Dim SerialDateNego As Long, SerialDateNegoPlusCinq As Long  
Dim DateNego As Date, DateNegoPlusCinq As Date

'on prend la valeur qui est dans la cellule active, on la rentre dans la
'variable SerialDateNego

    SerialDateNego = CLng(ActiveCell.Value)
    SerialDateNegoPlusCinq = SerialDateNego + 5



'Si le jour de DateNegoPlusCinq est un samedi, ou un dimanche, on 
'rajoute deux jours à cette variable (samedi et dimanche non ouvrés)
    
    If Format(CDate(SerialDateNegoPlusCinq), "dddd") = "samedi" Then
        SerialDateNegoPlusCinq = SerialDateNegoPlusCinq + 2
        GoTo Lbl1
    ElseIf Format(CDate(SerialDateNegoPlusCinq), "dddd") = "dimanche" Then
        SerialDateNegoPlusCinq = SerialDateNegoPlusCinq + 2
        GoTo Lbl1
    Else
        GoTo Lbl1
    End If


'on va maintenant convertir le numéro de série de la date du cinquième jour
'ouvré suivant en "vraie" date, sous la forme "jj/mm/aaaa". On entre cette 
'date dans la cellule à droite de celle qui était active au départ.
    
Lbl1:
    DateNegoPlusCinq = CDate(SerialDateNegoPlusCinq)
    ActiveCell.Offset(0, 1) = DateNegoPlusCinq

End Sub

Allez, merci encore une fois!

Bonne aprem!
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : VBA Excel - Date sous forme de numéro de série

Bonjour Divad, tototiti

une autre approche, pour le fun, ta date de référence en A1, te renvoie le résultat en B1 :

Code:
Range("B1").Value = IIf(Weekday(Range("A1").Value + 5, 2)  > 5, _
    Range("A1").Value + 7, Range("A1").Value + 5)

bonne soirée
@+

Edition : aarf, un + 5 de mal positionné...
 
Dernière édition:

Ewigefrost

XLDnaute Junior
Re : VBA Excel - Date sous forme de numéro de série

Bonjour et désolé pour ce gros déterrage !

En fait j'ai du mal à trouver un sujet correspondant exactement à mon problème sur internet, et j'aurais du mal à l'expliquer dans un nouveau thread, c'est pour ça que je poste ici, vu que la solution donnée pourrait servir de bonne base à ce que je souhatierais faire.

Donc voilà mon problème : je voudrais en fait convertir une date jj/mm/aaaa en un numéro "de série" (qui se situe aux environs de 40100 je crois en ce moment, càd le nombre de jours écoulés depuis le 01/01/1970).

Seulement, je ne souhaite pas incrémenter cette date de 5 jours, juste avoir un numéro "de série" sur ma colonne Z entière (jusqu'à la dernière ligne non vide) au lieu de ma date en jj/mm/aaaa.

Ces 2 lignes du programme de tototiti me semblent intéressantes pour commencer, mais ensuite je bloque totalement pour dire à Excel d'écrire ce numéro de série dans toutes les cellules de la colonne.

Pourriez-vous m'aider SVP ?

Merci beaucoup d'avance (et encore désolé pour ce gros déterrage) ;)
 

Victor21

XLDnaute Barbatruc
Re : VBA Excel - Date sous forme de numéro de série

Bonjour.

Pas besoin de conversion, à ce que j'ai compris : Sélectionner la colonne Z (qui contient des dates au format jj:mm:aaaa), format nombre, standard devrait suffire.
Si la date est en colonne Y (par ex) en Z1 : =Y1, et même manip.
 

Ewigefrost

XLDnaute Junior
Re : VBA Excel - Date sous forme de numéro de série

Bonjour,

Merci pour votre réponse.

Cependant, la solution de changer le format de la colonne à la main ne me convient pas vraiment.

En fait, mon fichier se met à jour automatiquement, et la colonne des dates est effacée puis reremplie avec de nouvelles valeurs, et Excel ne garde pas en mémoire le format des cellules j'ai l'impression lorsque les mises à jour se font (c'est assez lon et compliqué à expliquer en fait, mais en gros il faudrait vraiment que je passe par une macro avec boucle while (?) ).

Merci !
 

mutzik

XLDnaute Barbatruc
Re : VBA Excel - Date sous forme de numéro de série

bonjour Ewigefrost

1. ton fichier se met à jour automatiquement : par quelle manip ? une macro, des liens ?
2. si macro, à la fin de la macro tu mets toute la colonne en format standard (utilises l'enregistreur pour trouver le code)
3. si ce sont liens vers d'autres fichiers, il faut mettre cette même macro dans workbook.open
 

Statistiques des forums

Discussions
312 504
Messages
2 089 082
Membres
104 023
dernier inscrit
zerarka mohamed