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 :

VBA : Somme à variable en fonction de la date du jour [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Data Analyst
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut VBA : Somme à variable en fonction de la date du jour
    Bonjour

    Grand débutant sur VBA, je rencontre un souci.
    J'ai un tableau (en pièce jointe) dont le nombre et l'emplacement des colonnes peuvent varier.

    Je souhaiterait mettre dans la dernière colonne la somme des colonnes B jusqu’à la date du jour
    =>par exemple, pour la ligne 2, mettre la somme de B2 jusqu'a J2, et ensuite, étendre la formule jusqu’à la fin du tableau
    La ou se situe mon problème est que l'emplacement de la colonne contenant la date du jour pourra varier en fonction de la date de l’extrait.

    je suis pour l'instant capable de situer la première colonne vide du tableau et d'y mettre une somme, mais je ne sait pas la faire varier en fonction de l'emplacement de la colonne contenant la date du jour.

    Pouvez vous m'aider?

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    Bonjour,

    Quelque chose comme ceci peut-être?
    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
        Dim Colonne As Long
        Dim nbLignes As Long, ColonneVide As Long
        Dim Recherche As Range
     
        Set Recherche = Rows(1).Find(Date, LookIn:=xlValues, LookAt:=xlWhole)
        If Not Recherche Is Nothing Then
            Colonne = Recherche.Column
        Else
            MsgBox "La date n'a pas été trouvée"
            Exit Sub
        End If
     
        nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
        ColonneVide = Cells(1, Columns.Count).End(xlToLeft).Column + 1
     
        Range(Cells(2, ColonneVide), Cells(nbLignes, ColonneVide)).Formula = "=SUM(B2:" & Cells(2, Colonne).Address(False, False) & ")"

  3. #3
    Candidat au Club
    Homme Profil pro
    Data Analyst
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour Parmi

    Merci beaucoup pour ton aide
    Cela fonctionne parfaitement.

    Il me reste malheureusement un petit souci
    Dans mon extract, la première ligne n'est pas au format date
    J'ai donc ajouté la ligne de macro suivante avant ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Mettre la ligne 1 en format date
    Rows("1:1").Select
        Selection.NumberFormat = "dd/mm/yyyy"
    Mais cela ne fonctionne pas. A chaque fois que je lance la macro, le message "La date n'a pas été trouvée" s'affiche.
    Si je réécrit les dates à la main et que je lance la macro, la cela fonctionne.

    Aurais tu une solution pour remédier à cela?

    Merci d'avance pour ton aide

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    J'ai dû modifier ton fichier parce que mon format de date (Québec) est différent du vôtre

    Essaie comme ceci pour voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows("1:1").NumberFormat = "m/d/yyyy"

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    INGÉNIEUR
    Inscrit en
    Août 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : INGÉNIEUR
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 37
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    C'est quoi le type d'objet qui se trouve dans ta cellule? Assure-toi qu'il s'agit bel et bien d'une date.

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Il est preferable d'utiliser lookin:=xlFormulas que lookin:=xlValues.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Recherche = Rows(1).Find(Date, lookin:=xlFormulas, LookAt:=xlWhole)
    Comme le demontre le test suivant :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Sub test_xlValues_xlFormulas()
     Rows(1).Clear
     Cells(1, 2).NumberFormat = "m/d/yyyy"
     Cells(1, 2) = Date
     
     Debug.Print
     
     lookin = "xlFormulas"
     
     Cells(1, 2).NumberFormat = "m/d/yyyy"
     NumberFormat = Cells(1, 2).NumberFormat
     Call testFind(Date, lookin, NumberFormat)
     
     
     Cells(1, 2).NumberFormat = "dd\/mm\/yyyy"
     NumberFormat = Cells(1, 2).NumberFormat
     Call testFind(Date, lookin, NumberFormat)
     
     lookin = "  xlValues"
     
     Cells(1, 2).NumberFormat = "m/d/yyyy"
     NumberFormat = Cells(1, 2).NumberFormat
     Call testFind(Date, lookin, NumberFormat)
     
     Cells(1, 2).NumberFormat = "dd\/mm\/yyyy"
     NumberFormat = Cells(1, 2).NumberFormat
     Call testFind(Date, lookin, NumberFormat)
     
    End Sub
    Function testFind(d, lookin, NumberFormat)
     
    If lookin = "xlFormulas" Then
     Set Recherche = Rows(1).Find(Date, lookin:=xlFormulas, LookAt:=xlWhole)
    Else
     Set Recherche = Rows(1).Find(Date, lookin:=xlValues, LookAt:=xlWhole)
    End If
     
    If Recherche Is Nothing Then
     Debug.Print d & " non trouve avec " & lookin & " si Numberformat = " & NumberFormat
    Else
     Debug.Print d & "     trouve avec " & lookin & " si Numberformat = " & NumberFormat
    End If
     
    End Function

  7. #7
    Candidat au Club
    Homme Profil pro
    Data Analyst
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Analyst
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour

    Merci Parmi, cela fonctionne parfaitement avec le format "m/d/yyyy"
    Merci aussi a Docmarti pour tes précisions!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 16/10/2017, 16h20
  2. Somme en fonction de la date du jours
    Par mano_bi dans le forum Excel
    Réponses: 4
    Dernier message: 14/12/2014, 05h39
  3. [XL-2010] importer un fichier avec un nom variable en fonction de la date
    Par pepsister dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/06/2014, 13h10
  4. Somme en fonction de la date du jours/Donnée du jours
    Par mano_bi dans le forum QlikView
    Réponses: 6
    Dernier message: 13/06/2014, 16h56
  5. [2008R2] Somme mobile en fonction d'une date
    Par amraguts dans le forum SSAS
    Réponses: 8
    Dernier message: 23/09/2011, 15h27

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