Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 05/02/2010, 15h12   #1
Futur Membre du Club
 
Date d'inscription: juillet 2008
Messages: 33
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 :
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
spico45 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 16h15   #2
Membre du Club
 
Date d'inscription: décembre 2007
Messages: 93
Par défaut

Bonjour

Une réponse pour les dates
Ecrire
Code :
Range("t20")  = CDate(dde)
Range("t21")= CDate(dfin)
JP014
jp014 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 16h17   #3
Futur Membre du Club
 
Date d'inscription: juillet 2008
Messages: 33
Par défaut

Merci pour les dates c'est résolu, reste plus que la somme
spico45 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 16h24   #4
Expert Confirmé
 
Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 54
Messages: 1 863
Par défaut

Salut spico45 et le forum
Citation:
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.
Citation:
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 :
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 :
Selection.AutoFilter Field:=3, Criteria1:=">=" & clong(dde), Operator:=xlAnd, Criteria2:="<=" & clong(dfin)
A+
__________________
La qualité et la précision de la réponse sont proportionnelles à celles de la question.
Gorfael est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 17h00   #5
Futur Membre du Club
 
Date d'inscription: juillet 2008
Messages: 33
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

Dernière modification par spico45 ; 05/02/2010 à 17h46.
spico45 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/02/2010, 10h33   #6
Expert Confirmé
 
Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 54
Messages: 1 863
Par défaut

Salut spico45 et le forum
Ouais, je sais, mon "humour" est souvent sarcastique.
Citation:
=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 :
=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 :
Sub test()
Dim x As Date
x = Application.InputBox("Date à entrer", , , , , , , 1)
[A1] = x
End Sub
A+
__________________
La qualité et la précision de la réponse sont proportionnelles à celles de la question.
Gorfael est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/02/2010, 17h54   #7
Futur Membre du Club
 
Date d'inscription: juillet 2008
Messages: 33
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
spico45 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 19h30.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.