|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Date d'inscription: juillet 2008
Messages: 33
|
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 |
|
|
|
|
|
#2 |
|
Membre du Club
![]() Date d'inscription: décembre 2007
Messages: 93
|
Bonjour
Une réponse pour les dates Ecrire Code :
Range("t20") = CDate(dde) Range("t21")= CDate(dfin) |
|
|
|
|
|
#3 |
|
Futur Membre du Club
![]() Date d'inscription: juillet 2008
Messages: 33
|
Merci pour les dates c'est résolu, reste plus que la somme
|
|
|
|
|
|
#4 | ||
|
Expert Confirmé
![]() Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 54
Messages: 1 863
|
Salut spico45 et le forum
Citation:
Citation:
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") 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)
__________________
La qualité et la précision de la réponse sont proportionnelles à celles de la question. |
||
|
|
|
|
|
#5 |
|
Futur Membre du Club
![]() Date d'inscription: juillet 2008
Messages: 33
|
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. |
|
|
|
|
|
#6 | |
|
Expert Confirmé
![]() Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 54
Messages: 1 863
|
Salut spico45 et le forum
Ouais, je sais, mon "humour" est souvent sarcastique. Citation:
Une proposition : Code :
=sommeprod((T20<=C2:C193)*(C2:C193<=T21)*P2:P193) 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
__________________
La qualité et la précision de la réponse sont proportionnelles à celles de la question. |
|
|
|
|
|
|
#7 |
|
Futur Membre du Club
![]() Date d'inscription: juillet 2008
Messages: 33
|
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 |
|
|
|
|
|
![]() |
||
[XL-2003] calcul d'une colonne après tri
|
||
| Outils de la discussion | |
|
|