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 :

Compteur prenant compte date du jour


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Par défaut Compteur prenant compte date du jour
    Bonjour à tous,
    Etudiant en agronomie, j'essaye d'apprendre le VBA sans grande prétention.

    Dans le cadre d'un stage en entreprise, j'essaye de programmer un macro de gestion des ventes. L'entreprise livre des paniers de légumes aux clients de façon hebdomadaire. Ceux-ci sont parfois absent et nous communiquent leurs dates d'absence.

    Je e programme un compteur avec VBA qui fait la somme des paniers de légumes à livrer chaque jour, puis une macro qui soustrait les clients étant absent le jour J.

    Voici le code que j'ai employé pour soustraire les clients :
    code :

    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
    Sub dday()
    Dim x As Date, a As Integer
    a = 1
     
    While a < 500
     
    Cells(a, 2).Value = x
    If x = today Then
    Cells(1, 6).Value = Cells(1, 6) - 1
    Else
     
    End If
    a = a + 1
     
    Wend
     
    End Sub
    Seulement, ce code remplace la date saisie par la date du jour et en conséquence ne fonctionne pas. Pouvez vous m'aider ?

    Merci de votre aide !

    misterW

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    pas sûr d'avoir compris ton explication où toutes les inconnues sont manquantes quasiment

    donc tu veux :

    - compter le nombre de cellules de la colonne B, entre la ligne 1 et 499, qui ont une date égale à la "date du jour" (ton today ??)
    - soustraire ce résultat de la valeur de la cellule F1

    si tel est le cas, toute ta macro se simplifie par la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub dday()
        Cells(1, 6).Value = Cells(1, 6) - Application.WorksheetFunction.CountIf(Cells(1, 2).Resize(499, 1), Date)
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    En faisant une fonction pour pouvoir être utilisée dans Excel. Les noms des clients sont en colonne A de A2 à A20 par exemple et en colonne B la date de départ en congés et en colonne C la date de retour de congés :
    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
     
    Function NBPANIERS(PlageNoms As Range) As Long
     
        Dim Cel As Range
        Dim Paniers As Long
     
        Application.Volatile
     
        For Each Cel In PlageNoms
     
            If Cel.Value <> "" Then
     
                If Cel.Offset(, 1).Value > Date Then Paniers = Paniers + 1
     
                If Cel.Offset(, 2).Value < Date Then Paniers = Paniers + 1
     
            End If
     
        Next Cel
     
        NBPANIERS = Paniers
     
    End Function
    Tu l'utilises alors de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =NBPANIERS(A2:A20)
    Bon, je n'ai pas géré les dates qui n'en sont pas (faire attention à la saisie, les entrer sous ce format : 02/08/2015) ni les dates absentes mais tu peux améliorer cette fonction si tu le souhaites.

    Hervé.

Discussions similaires

  1. soustraire deux dates sans prendre en compte weekends et jours feries
    Par debutVBA dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 03/01/2012, 15h40
  2. [XL-2007] Si cellule modifiée alors prise en compte de la date du jour
    Par schott dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/06/2011, 09h10
  3. Fonction utilisateur qui renvoie la date du jour
    Par falcon dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 13/12/2004, 11h03
  4. [XSL] Date du jour
    Par JustAGphy dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 02/06/2004, 17h29
  5. maj d'1 colonne avec la date du jour lors de l'INSERT
    Par Celina dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 18/12/2003, 15h03

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