Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion jeanphi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jeanphi

XLDnaute Occasionnel
bonsoir

je souhaite créer une macro me permettant de mettre en place le pb suivant:
dans la colonne C figure les dates de création et dans la colonne T les dates de livraison
en fait je souhaite qu'à chaque fois où il y a une date dans la colonne C, la macro vérifie s'il y a une date dans la ligne correspondante de la colonne T et si c'est le cas qu'elle me somme le total de la colonne C et celui de la colonne T puis qu'elle fasse la différence exprimée en jours entre C et T
quelqu'un peut t'il m'aider?
Ci dessous ma macro actuelle mais elle ne marche que si toutes les cellules de la colonne T sont remplies 🙁
merci bcp 🙂

Private Sub CheckBox2_Click()
Worksheets("FEB").Select
DateCreation = WorksheetFunction.Sum(Range("C8:C100"))
DateCommande = WorksheetFunction.Sum(Range("Q8:Q100"))
total = Application.WorksheetFunction.CountA(Range("E8:E700"))
Calcul = (DateCommande - DateCreation) / total
If DateCommande > DateCreation Then
MsgBox "La durée moyenne de commande est de " & Round(Calcul, 2) & " jours", vbInformation, "Délai moyen entre date de création de la FEB et date de commande"
Else
MsgBox "La durée moyenne ne peut être calculée pour le moment, veuillez mettre à jour les dates de commande absentes", vbCritical, "Information"
End If
End Sub
 
Re : Somme si...

Salut jeanphi et le forum

je souhaite créer une macro me permettant de mettre en place le pb suivant:
Moi, je préfère les résoudre (^^)

dans la colonne C figure les dates de création et dans la colonne T les dates de livraison
en fait je souhaite qu'à chaque fois où il y a une date dans la colonne C, la macro vérifie s'il y a une date dans la ligne correspondante de la colonne T et si c'est le cas qu'elle me somme le total de la colonne C et celui de la colonne T puis qu'elle fasse la différence exprimée en jours entre C et T
???? Si j'ai des dates en C et T, ça sert à quoi de faire la somme ?
si tu a 3 dates égales à aujoud'hui par exemple, à quoi peut bien servir 117942 ?

quelqu'un peut t'il m'aider?
Pas sans quelques précisions


Private Sub CheckBox2_Click()
Worksheets("FEB").Select
DateCreation = WorksheetFunction.Sum(Range("C8:C100"))
DateCommande = WorksheetFunction.Sum(Range("Q8:Q100"))
total = Application.WorksheetFunction.CountA(Range("E8:E700"))
Calcul = (DateCommande - DateCreation) / total
If DateCommande > DateCreation Then
MsgBox "La durée moyenne de commande est de " & Round(Calcul, 2) & " jours", vbInformation, "Délai moyen entre date de création de la FEB et date de commande"
Else
MsgBox "La durée moyenne ne peut être calculée pour le moment, veuillez mettre à jour les dates de commande absentes", vbCritical, "Information"
End If
End Sub
Comprend pas du tout ce que tu veux faire
Code:
Sub test()
Dim Cel As Range
With Worksheets("FEB")
    For Each Cel In .Range(.Range("D8"), .Range("D65536").End(xlUp))
        If Not (IsEmpty(Cel)) And IsDate(Cel) Then
            .Range("K" & Cel.Row) = Int(Cel - Cel.Offset(0, -1))
        End If
    Next Cel
End With
End Sub
Pour chaque cellule de la plage D8 à la dernière non-vide de D de la feuille FEB
si la cellule n'est pas vide et qu'elle contient une date
la cellule K de la même ligne = différence entre la cellule de la colonne de gauche -la cellule testée

Ce qui me semble plus ou moins à la déinition de ce que tu veux (ou du moins, ce que j'ai cru comprendre).
A+
 
Re : Somme si...

bjr le forum, bjr gorfael


en fait je souhaite calculer le délai moyen entre une date de création d'un dossier et une date de commande
pr cela et c'est la raison pr laquelle j'ai mis mon code ci dessous j'ai besoin de pouvoir additionner les valeurs de la colonne c et les valeurs de la colonne t (à condition qu'une ligne lambda ai une valeur dans c et dans t) puis de faire la différence entre les deux delta afin de connaitre le délai moyen
j ai donc besoin qu une msgbox me donne le résultat
donc pr le moment je n arrive pas a utiliser ton code 🙁
si quelqu'un pouvait me débloquer ce pb ce serait cool! 🙂
 
Re : Somme si...

Salut!

En fait c'est la méthode qui n'est pas bonne, je pense qu'il vaut mieux calculer d'abord le délai de livraison pour chaque commande.

Puis seulement calculer le délai moyen en faisant:

somme des délais / nombre de commandes livrées.
 
Additionner une valeur dans 2 colonnes si la valeur existe sur les 2 col

je joins un petit fichier, ce sera plus simple pr la compréhension 😉
je souhaite que la macro additionne les cellules de C10 à C24 et de F10 à F24 avec pour condition qu'une valeur soit présentes dans 2 colonnes
si l'on regarde l'exemple, je souhaite pouvoir additionner C10 et C15 puis F10 et F15 sans prendre en compte les valeurs ne figurant que sur une seule colonne
Je souhaite ensuite qu'une fois obtenu le total de la colonne C et de la colonne F, la macro soustrait le total de la colonne C de la colonne E pour obtenir un délai moyen, délai qui remonte via une MSGBOX
j'espère que quelqu'un pourra m'aider!! 🙁
merci et bonne soirée à tous
 

Pièces jointes

Re : Somme si...

Bonjour à tous,
Salut bh*2,

Un essai avec un code plus long que celui de bhbh et des colonnes supplémentaires mais comme je ne suis pas sûr d'avoir tout compris on pourra peaufiner après

A+
 
Dernière édition:
Re : Somme si...

bonjour



c'est bien ce que je voulais
le seul "hic" c'est le résultat qui s'affiche en colonne B et qui me pose pb puisque j'utilise de nombreuses macro ds le fichier
encore merci pour ton aide et bonne journée à toi 😉
 
Re : Somme si...

Bonjour,
Salut bh*2,

bhbh : je pense que jeanphi (Post de 09:35) parle de ma version puisque toi, tu n'as pas de cellules intermédiaires.

Merci à toi, j'ai appris Evaluate

Au plaisir de te croiser
 
Re : Somme si...

bonjour



c'est bien ce que je voulais
le seul "hic" c'est le résultat qui s'affiche en colonne B et qui me pose pb puisque j'utilise de nombreuses macro ds le fichier
encore merci pour ton aide et bonne journée à toi 😉
Salut
Code:
Sub test()
Dim X As Long
Dim Y As Integer
Dim Tot_V As Double
Y = 0
For X = 2 To [F65536].End(xlUp).Row
    If Range("F" & X) >= Range("C" & X) And IsDate(Range("F" & X)) Then
        Tot_V = Tot_V + Range("F" & X) - Range("C" & X)
        Y = Y + 1
    End If
Next X
Tot_V = Round(Tot_V / Y, 2)
MsgBox Tot_V, vbOKOnly, "Résultat"
End Sub
Faite suivant ton fichiier Test
A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
786
Réponses
6
Affichages
345
Réponses
5
Affichages
911
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…