Excel

Résolu/Fermé
sid3show79 Messages postés 19 Date d'inscription mercredi 13 avril 2016 Statut Membre Dernière intervention 23 décembre 2019 - 23 juil. 2016 à 22:34
sid3show79 Messages postés 19 Date d'inscription mercredi 13 avril 2016 Statut Membre Dernière intervention 23 décembre 2019 - 24 juil. 2016 à 02:32
bonjour,

j'aimerais de part le biais d'inputbox demander une semaine de référence(1-52), avec cette référence aller a la feuille département me servir de la fonction .find et sélectionner la cellule (de la colonne a) de la semaine(ref inputbox) par la suite additionner les valeurs de la colonne B) de 6 cellule vers le haut à condition que la colonne c ne contienne pas string "oui".
le tout serait additionner dans la premiere feuille peu importe la cellule

j'aimerais avoir de quoi pour partir mais je suis un peu dans le neant. au pire comment je fais pour selectionner 6 cellules et ne pas prendre celle offset(0,1).value= "oui"

https://www.cjoint.com/c/FGxuIamrtSU

merci

2 réponses

thev Messages postés 1883 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 6 novembre 2024 691
Modifié par thev le 24/07/2016 à 00:13
Bonjour,

ci-joint code à essayer


Sub essaie()

Dim semaine As Range, vente As Range, férié As Range, ligne As Range
Dim cumul_vente As Long
Dim strnb_semaine As Integer
Dim A, B, C, D, E, F, G
strnb_semaine = 6
Dim strsem_ref As Integer


With Feuil2.UsedRange 'plage utilisée
'définition rubriques
Set semaine = .Cells.Find("semaine", LookIn:=xlValues)
Set vente = .Cells.Find("vente", LookIn:=xlValues)
Set férié = .Cells.Find("férié", LookIn:=xlValues)

'assignation numéro de semaine
strsem_ref = InputBox("quelle est votre semaine de reférence?")
Set ligne_semaine = semaine.Resize(.Rows.Count).Find(strsem_ref, LookIn:=xlValues)
If ligne_semaine.Row - semaine.Row - strnb_semaine >= 0 Then Set début_semaine = ligne_semaine.Offset(-strnb_semaine) _
Else Set début_semaine = semaine

'cumul vente juqu'au numéro de semaine choisi
cumul_vente = 0
For Each ligne In .Offset(début_semaine.Row).Resize(.Rows.Count - début_semaine.Row).Rows
If ligne.Columns(férié.Column) <> "oui" Then cumul_vente = cumul_vente + ligne.Columns(vente.Column)
If ligne.Columns(semaine.Column) = strsem_ref Then Exit For 'sortie boucle lorsque le numéro de semaine choisi est atteint
Next
End With

'Stockage dans Feuil1
Feuil1.Range("B3") = cumul_vente


End Sub
0
sid3show79 Messages postés 19 Date d'inscription mercredi 13 avril 2016 Statut Membre Dernière intervention 23 décembre 2019
24 juil. 2016 à 00:22
j'ai essaye avec la semaine 7 pour voir la facon dont reagi la macro. effectivement il calcule 6 semaines mais lorsque que l'on tombe sur une journée férié, j'aimerais pouvoir rester a 6 semaines cumuler.la avec la macro comme ca la semaine ferié il ne compte pas la valeur mais il l'inclus dans les 6.

faudrais qu'il skip les feriés et qui passe a la suivante pour avoir les 6 semaines
0
sid3show79 Messages postés 19 Date d'inscription mercredi 13 avril 2016 Statut Membre Dernière intervention 23 décembre 2019
24 juil. 2016 à 00:33
tu as l'aire d'une pas pire machine, pense tu que c'est possible de mettre le nombre de semaine qui était 6 ici par une autre inputbox?

le problème c'est d'assigner les variables sinon juste de changer la méthode utilisé. au départ c'est ce que je voulais faire mais ca me semble un plus complexe.

merci de ton aide
0
thev Messages postés 1883 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 6 novembre 2024 691
Modifié par thev le 24/07/2016 à 02:34
ci-joint code modifié

Sub essaie()

Dim semaine As Range, vente As Range, férié As Range, ligne As Range
Dim cumul_vente As Long
Dim strnb_semaine As Integer
Dim A, B, C, D, E, F, G
Dim strsem_ref As Integer


With Feuil2.UsedRange 'plage utilisée
'définition rubriques
Set semaine = .Cells.Find("semaine", LookIn:=xlValues)
Set vente = .Cells.Find("vente", LookIn:=xlValues)
Set férié = .Cells.Find("férié", LookIn:=xlValues)

'assignation numéro de semaine
strsem_ref = InputBox("quelle est votre semaine de reférence?")
Set ligne_semaine = semaine.Resize(.Rows.Count).Find(strsem_ref, LookIn:=xlValues)
End With

'cumul vente depuis le numéro de semaine choisi
cumul_vente = 0
strnb_semaine = 6
For i = ligne_semaine.Row To semaine.Row + 1 Step -1
If férié.Rows(i + 1 - férié.Row) <> "oui" Then
cumul_vente = cumul_vente + vente.Rows(i + 1 - vente.Row)
strnb_semaine = strnb_semaine - 1
End If
If strnb_semaine = 0 Then Exit For 'sortie boucle lorsque les 6 semaines sont ateintes
Next

'Stockage dans Feuil1
Feuil1.Range("B3") = cumul_vente


End Sub

--
 
0
sid3show79 Messages postés 19 Date d'inscription mercredi 13 avril 2016 Statut Membre Dernière intervention 23 décembre 2019
24 juil. 2016 à 02:32
merci!! je vais essayer de comprendre le tout maintenant.
0