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 :

Question sur les nombres - Integer négatifs


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2024
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Question sur les nombres - Integer négatifs
    Bonjour,
    Je cherche à mettre une condition pour des nombres entiers, pour faire en sorte de prendre en compte les mois précédents du mois en cours. Avec une petite spécificité évidemment : si le mois est inférieur à 1, il faut lui ajouter 12.
    Donc si le mois en cours est 1 (Janvier), le mois précédent 0, auquel j'ajoute 12 (Décembre), le précédent à celui-ci -1, auquel j'ajoute 12 (Soit 11 > Novembre).

    Avec ce code, la première partie fonctionne et me renvoie bien 1, 0 , -1, mais quand je fais la suite, les nombres inférieurs à 1 sont mis à zéro.

    Voici le code que j'utilise.

    Avez-vous une idée de ce qui pourrait bloquer ? Le forma Integer intègre bien les nombres négatifs, non ?

    Merci d'avance pour vos lumières :-)

    Aujourdhui = Date
    Mois = Month(Aujourdhui)
    An = Year(Aujourdhui)
    AnUn = Year(Aujourdhui)
    AnDeux = Year(Aujourdhui)
    AnTrois = Year(Aujourdhui)

    Dim MoisUn, MoisDeux, MoisTrois As Integer

    Mois = Mois - 1
    MoisUn = Mois - 1
    MoisDeux = Mois - 2
    MoisTrois = Mois - 3

    MsgBox "MoisUn " & MoisUn & " - MoisDeux " & MoisDeux & " - MoisTrois " & MoisTrois

    If MoisUn < 1 Then MoisUn = MoisUn + 12 And AnUn = An - 1
    If MoisDeux < 1 Then MoisDeux = MoisDeux + 12 And AnDeux = An - 1
    If MoisTrois < 1 Then MoisTrois = MoisTrois + 12 And AnTrois = An - 1

    MsgBox "MoisUn " & MoisUn & " - MoisDeux " & MoisDeux & " - MoisTrois " & MoisTrois

  2. #2
    Membre confirmé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 362
    Points : 644
    Points
    644
    Par défaut
    Bonjour,
    Utilisez plutôt DateSerial pour ce type de calcul, l'incrémentation se fera toute seule.

    Référence Microsoft : Fonction DateSerial (Visual Basic pour les applications) | Microsoft Learn
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 118
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 118
    Points : 1 644
    Points
    1 644
    Par défaut
    Salut,

    Pourquoi réinventer la roue (en moins bien) ?
    DateSerial, DateAdd, DateDiff, c'est fait pour ca.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2024
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Valtrase Voir le message
    Bonjour,
    Utilisez plutôt DateSerial pour ce type de calcul, l'incrémentation se fera toute seule.

    Référence Microsoft : Fonction DateSerial (Visual Basic pour les applications) | Microsoft Learn
    Merci beaucoup pour vos retours. Je vais regarder ça :-)
    Très bonne fin de journée,
    Hugues.

  5. #5
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 422
    Points : 2 181
    Points
    2 181
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Aujourdhui  as date,an As Integer,AnUn  As Integer, AnDeux As Integer, AnTrois As Integer
    Aujourdhui = Date
    an = Year(Aujourdhui)
    AnUn = an + 1
    AnDeux = AnUn + 1
    AnTrois = AnDeux + 1
     
    Dim Mois  As Integer,MoisUn As Integer, MoisDeux As Integer, MoisTrois As Integer
    Mois = Month(Aujourdhui)
    MoisUn = Month(DateSerial(an, mois - 1, 1))
    MoisDeux = Month(DateSerial(an, MoisUn - 1, 1))
    MoisTrois = Month(DateSerial(an, MoisDeux - 1, 1))
     
    MsgBox "MoisUn " & MoisUn & " - MoisDeux " & MoisDeux & " - MoisTrois " & MoisTrois

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 118
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 118
    Points : 1 644
    Points
    1 644
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MoisUn = Month(DateSerial(an, mois - 1, 1))
    Il y a peut être un peut plus lisible:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MoisUn = Month(DateAdd("m", -1, an))

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2024
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup :-)

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/01/2015, 19h00
  2. [Débutant] [C#] Question sur les threads et le nombre de calculs
    Par Pawda dans le forum C#
    Réponses: 2
    Dernier message: 07/02/2013, 23h39
  3. Question bête sur les nombre à virugle
    Par zebulon94 dans le forum Général Python
    Réponses: 34
    Dernier message: 03/02/2009, 15h13
  4. Réponses: 11
    Dernier message: 01/05/2007, 00h15
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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