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 :

calcul d'une colonne après tri [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 50
    Par défaut calcul d'une colonne après tri
    Bonjour à tous,

    j'ai un tableau sous forme de base de donnée, avec des dates, des temps etc.
    J'ai inscrits mes noms de colonne en ligne A, je souhaiterais qu'il me fasse la somme des valeurs restantes en colonne P.

    2eme question: pourquoi lorsque je rentre des dates dans ma macro il me les mets au format americain et prends francais.

    Voilà mon code, nécessité à me dire s'il y a moyen de faire plus court

    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
    Sub daterec()
    Dim Message, Titre, réponse, dde, dfin
     
    Titre = "Date de début"
    Message = "Entrez la date du début au format jj/mm/aaaa :"
    dialogue: dde = InputBox(Message, Titre)
     
    If dde <> Format(dde, "dd/mm/yyyy") Then
    réponse = MsgBox("Votre date n'est pas valide! Recommencez ?", 4)
        If réponse = vbYes Then GoTo dialogue Else Exit Sub
    End If
     
    Titre = "Date de fin"
    Message = "Entrez la date dde fin au format jj/mm/aaaa :"
    dialogue2: dfin = InputBox(Message, Titre)
     
    If dfin <> Format(dfin, "dd/mm/yyyy") Then
    réponse = MsgBox("Votre date n'est pas valide! Recommencez ?", 11)
        If réponse = vbYes Then GoTo dialogue2 Else Exit Sub
    End If
     
    dde = Format(dde, "dd/mm/yyyy")
    dfin = Format(dfin, "dd/mm/yyyy")
    Range("t20") = dde
    Range("t21") = dfin
     
    Selection.AutoFilter Field:=3, Criteria1:=">=" & dde, Operator:=xlAnd, Criteria2:="<=" & dfin
     
     
    End Sub

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Par défaut
    Bonjour

    Une réponse pour les dates
    Ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("t20")  = CDate(dde)
    Range("t21")= CDate(dfin)
    JP014

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 50
    Par défaut
    Merci pour les dates c'est résolu, reste plus que la somme

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut spico45 et le forum
    J'ai inscrits mes noms de colonne en ligne A, je souhaiterais qu'il me fasse la somme des valeurs restantes en colonne P.
    Sans plus de données, difficile te t'aider. Va regarder l'aide de SOUS.TOTAL() et regarde si ça pourrait t'aider.
    2eme question: pourquoi lorsque je rentre des dates dans ma macro il me les mets au format americain et prends francais.
    Parce que si tu ne lui dit pas que c'est une date, il la prend en texte et quand tu la formates, il convertit du texte au format demandé, et daonc à ce moment seulement, il découvre que c'est une date, et pas avant. Et comme il est sous VBA qui est en américain

    Tu viens de faire tout une vérification que les entrées sont bien au format jj/mm/AAAA et tu te sents obligé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dde = Format(dde, "dd/mm/yyyy")
    dfin = Format(dfin, "dd/mm/yyyy")
    Tu portes des bretelles avec ta ceinture ?

    Quand j'utilise un filtre par dates, suite à quelques déconvenues, je préfère convertir lesdites dates en CLong().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.AutoFilter Field:=3, Criteria1:=">=" & clong(dde), Operator:=xlAnd, Criteria2:="<=" & clong(dfin)
    A+

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 50
    Par défaut
    Non je porte pas de bretelles avec ma ceinture.
    C'est juste que je démarre réellement à faire des codes et j'ai beaucoup de mal donc dés fois je pense que ce que je fais est redondant.

    J'ai mes dates qui sont en colonne C, mes temps en colonne P, lorsque je fais un tri par date, cetaines lignes se masquent parce qu'il ne sont pas dans le critères donnés. Donc je veux faire la somme de toutes les temps restants visbles en colonne P.

    j'essaye avec toute les formules que je connais somme.si, sous-totaux, bdsomme et j'ai toujours le même résultat =0. JE suis sue que le problème vient que j'utulise un format de date et que dans la formule je la rentre mal mais je ne trouve aps de soluce ou alors je cherche mal.

    voilà un extrait d'une de mes formules essayées :
    =SOMME.SI(C2:C193;">="&T20+"<="&T21;P2: P193)
    je détails ma formule "C2:C193" correspondent à la plage ou sont situé mes dates ensuite "">="&T20+"<="&T21" correspond à un intervalle entre tel date et tel date et si ok les cellules à additioner sont "P2: P193". Mais elle ne veut pas fonctionner

    Bon allez bon week end à tous

    Coridalement

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut spico45 et le forum
    Ouais, je sais, mon "humour" est souvent sarcastique.
    =SOMME.SI(C2:C193;">="&T20+"<="&T21;P2: P193)
    je détails ma formule "C2:C193" correspondent à la plage ou sont situé mes dates ensuite "">="&T20+"<="&T21" correspond à un intervalle entre tel date et tel date et si ok les cellules à additioner sont "P2: P193". Mais elle ne veut pas fonctionner
    Un bon point : tu ne fais pas que donner une formule qui ne fonctionne pas, tu explique ce que tu veux.

    Une proposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =sommeprod((T20<=C2:C193)*(C2:C193<=T21)*P2:P193)
    fera la somme des cellules de P si la date en C est comprise entre T20 et T21
    Testes la formule et si tu veux des explications plus détaillées, demandes.

    en VBA, pour fixer des dates, j'utilise soit dateserial() pour être sûr qu'excel comprenne bien, soit Application.Input(date, Type:=1) un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    Dim x As Date
    x = Application.InputBox("Date à entrer", , , , , , , 1)
    [A1] = x
    End Sub
    A+

  7. #7
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 50
    Par défaut
    Merci,

    bon la c'est le week end donc j'évite de bosser, j'essayerais donc ta formule lundi.

    Dans tout les cas merci d'avance.

    Bon week end tout le monde

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

Discussions similaires

  1. inserer une ligne aprés tri dans une colonne
    Par arctica dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/09/2010, 11h07
  2. Calcul de la somme d'une colonne apres la derniere ligne non vide
    Par lilp1 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/06/2009, 11h14
  3. Réponses: 3
    Dernier message: 14/06/2007, 13h35
  4. [VB.NET] Calculs dans une colonne d'un datagridview
    Par boulete dans le forum Windows Forms
    Réponses: 3
    Dernier message: 31/03/2006, 15h11
  5. Calcul d'une colonne du table MySQL
    Par tom06440 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/11/2005, 19h10

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