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 !

geoff007

XLDnaute Nouveau
Bonjour à tous et à toutes ...
j'ai besoin d'aide c'est urgent et comme toujours je mis prend au dernier moment.
Dans le fichier qui suit à partir d'un bout de code recuperer sur le net...(et la c'est le drame) j'ai besoin a partir du USF demander un intervalle à l'utilisateur ( date speciale commencant à la colonne I faute extraction SAP) et à partir de cette intervalle prendre les données des lignes pour en faire une moyenne (par rapport à l'intervalle souhaité ) en fin de tableau derniere colonne!!!!

Je sais pas si j'ai été tres clair ....
A la base je voulais dans le listbox les années pour faire le tri dans les combobox ensuite mais bon c'est un plus ...

si quelqu'un peut m'aider ... d'avance je vous remercie

j'ai des listbox et combo un pe dans tous les sens on peut tt remettre à plat ...No soucy
Merci
 

Pièces jointes

Re : A l'aide Urgenttttt

Bonjour

Avec un exemple ce serait plus clair

Ai je bien compris ?
Les dates sous la forme année mois se trouvent dans la ligne 1
Si la date commande par B on est dans le futur.
Quel est le rôle de la listbox
Doit-on prendre enc ompte les colonnes M N avec ligne 1 des incohérences avec le nom des colonnes.
Quand on a 0 dans une cellule doit onen tenir compte pour le calcul de la moyenne ?

JP
 
Re : A l'aide Urgenttttt

Bonjour geoff007 et bienvenue,

Il faut savoir qu'ici seuls des bénévoles répondent en prenant sur leur temps de travail ou de loisir.

De cela découle que rien n'est jamais vraiment urgent. C'est d'ailleurs un mot à éviter ici.

Ensuite, tu sembles surpris qu'au bout d'un quart d'heure, tu n'aies pas encore eu de réponse !!!

Je me répète, ce sont des bénévoles humains qui répondent, pas des robots.

A cette heure-ci, beaucoup de Forumeurs, parmi ceux qui peuvent te répondre, sont sans doute sur la route ou viennent de rentrer chez eux.

Question VBA, je ne pourrais malheureusement pas t'apporter mon aide.

Mais sois patient, quelqu'un viendra bien jeter un oeil sur ton problème.

Bonne soirée

@+
 
Re : A l'aide Urgenttttt

Oui je prends en compte ta remarque c'est vrai je suis parti plu tot du travail pour avoir internet et essayer de trouver la solution.
Ta remarque est bonne..
Par avance désolé de mon urgence...
Bonsoir JP14...
Alors je vais essayé de t'eclairer sur ma demande.
effectivement le B s'est le passé la colonne B seule c'est le présent. (avec zone d'incertitude mais à prendre en compte pour la moyenne)
Alors le but c'est que l'utilisateur via un USF puisse choisir un intervalle ... 3, 5, 8 etc a titre d'exemple. et que la moyenne s'affiche dans la derniere colonne du tableau...(par article)
N'hesitez pas si besoin d'information
c'est pas simple à expliquer.
merci d'avance
 
Re : A l'aide Urgenttttt

Re
pour la listbox je voulais juste mettre les années 2008 2009 .... parce que je pensais que ca pouvez etre necessaire pour la suite ... si l'utilisateur demande 2009 le code ne lira pas la premiere partie .... du tableau c'est juste une question d'optimisation mais si cela n'est pas necessaire on peut zappé l'utilisateur rentre juste lintervalle souhaite et la moyenne s'affiche ca me va aussi ....
Merci
 
Re : A l'aide Urgenttttt

Bonjour à tous,

Je n'ai pas compris non plus.
effectivement le B s'est le passé la colonne B seule c'est le présent. (avec zone d'incertitude mais à prendre en compte pour la moyenne)
Alors le but c'est que l'utilisateur via un USF puisse choisir un intervalle ... 3, 5, 8 etc a titre d'exemple. et que la moyenne s'affiche dans la derniere colonne du tableau...(par article)
N'hesitez pas si besoin d'information
c'est pas simple à expliquer.
merci d'avance

Dans tes Combo le format devrait être "YYYYMM" si tu souhaites l'année sur quatre digit et les mois sur deux

Tu parles de Moyenne alors que tu demandes un SUM

A+

Edition : Bonjour Tibo ;-) et +1
 
Dernière édition:
Re : A l'aide Urgenttttt

Bonsoir

Ci dessous le code qui affiche les années.
J'ai remplacé la listbox par un combobox pour éliminer les doublons.
Code:
Private Sub UserForm_Initialize()
Dim X As Byte
Dim dc1 As Long
Dim ligentdes As Long
Dim nomfeuille1 As String
dim data1 as string


ligentdes = 1
nomfeuille1 = "Feuil1"
    'Remplit la ListBox pour choisir une année.

        'Windows(Feuil1).Activate
dc1 = Sheets(nomfeuille1).Range("IV" & ligentdes).End(xlToLeft).Column
With ComboBox3
    .Clear

For X = 10 To dc1 - 3
    Data1 = ""
    For i = 1 To Len(Sheets(nomfeuille1).Cells(1, X))
        If IsNumeric(Mid(Sheets(nomfeuille1).Cells(1, X), i, 1)) Then
            Data1 = Data1 & Mid(Sheets(nomfeuille1).Cells(1, X), i, 1)
        End If
    Next i
      
    Data1 = Left(Data1, 4)
    If .ListCount > 0 Then .Value = Data1
        
    If .ListIndex = -1 And Data1 <> "" Then .AddItem Data1
Next X
    .Style = 2
end with

Doit-on rajouter les mois ?
Ou utiliser cet code pour les deux autres combobox en rajoutant les mois ?

JP
 
Re : A l'aide Urgenttttt

Oui pardon c'est effectivement une moyenne...
Alors zappons le B c'est complexe à expliquer dans mon travail on considere le mois en court comme une incertitude ainsi qu'une partie du mois -1 et une partie du mois +1....
Mais passons la dessus le plus simple c'est que je dise l'utilisateur choisi un intervalle par rapport aux dates sur la premiere ligne ... et la moyenne s'affiche en derniere colonne

Pardon pr les confusions j'ai le cervo ki choffe depuis midi sans manger ...
 
Re : A l'aide Urgenttttt

Oui JP14 dans mon format de date un pe spéciale tu auras remarqué que j'ai 200808....
l'utlisateur demandera de faire par exemple la moynne entre 200808 et B200903 donc par rapport a ta demande je pense kil fo prendre en compte les mois ....
 
Re : A l'aide Urgenttttt

j'ai pris en compte ta partie de code je comprends pas tout mais les années s'affiche merci.
La suite serait par rapport a ce que tu as fait (si on peux se tutoyer...) l'utilisateur choisi un mois de début et un mois de fin par rapport aux dates ligne 1 ... et la moyenne s'affiche derniere colonne et par article ....
Merci
 
Re : A l'aide Urgenttttt

Bonsoir

Ci dessous la macro de l'usf

Code:
Dim flag As Boolean
Dim dc1 As Long
Dim X As Byte

Dim ligentdes As Long
Dim nomfeuille1 As String


Private Sub CommandButton1_Click()
Dim col1 As Long
Dim data1 As String
Dim data2 As String
Dim col2 As Long
col1 = CLng(ComboBox1.List(ComboBox1.ListIndex, ComboBox1.ColumnCount - 1))

col2 = CLng(ComboBox2.List(ComboBox2.ListIndex, ComboBox2.ColumnCount - 1))
data1 = Replace(ComboBox1.Value, "  ", "")
data2 = Replace(ComboBox2.Value, "  ", "")


    If ComboBox1.Value = "" Then Exit Sub
    If ComboBox1.ListIndex = -1 Or ComboBox2.ListIndex = -1 Then Exit Sub
    
    If data1 > data2 Then
        MsgBox "La date de fin ne peut pas etre antérieure à la date de début ."
        Exit Sub
    End If

With Worksheets(nomfeuille1)
For i = 2 To Sheets(nomfeuille1).Range("a65536").End(xlUp).Row
cold = dc1 - col1 + 1 ' à vérifier
colf = dc1 - col2
    .Cells(i, dc1).FormulaR1C1 = "=AVERAGE(RC[-" & cold & "]:RC[-" & colf & "])"
Next i
End With
    'Fermeture UserForm
    Unload Me

End Sub


Private Sub UserForm_Initialize()

Dim data1 As String

flag = True

ligentdes = 1
nomfeuille1 = "Feuil1"
    'Remplit la ListBox pour choisir une année.

        'Windows(Feuil1).Activate
dc1 = Sheets(nomfeuille1).Range("IV" & ligentdes).End(xlToLeft).Column

With ComboBox2
    .Clear
    .ColumnCount = 2
    .ColumnWidths = "50;0"
End With

With ComboBox1
    .Clear
    .ColumnCount = 2
    .ColumnWidths = "50;0"
    
For X = 10 To dc1 - 3
    data1 = ""
    For i = 1 To Len(Sheets(nomfeuille1).Cells(1, X))
        If IsNumeric(Mid(Sheets(nomfeuille1).Cells(1, X), i, 1)) Then
            data1 = data1 & Mid(Sheets(nomfeuille1).Cells(1, X), i, 1)
        End If
    Next i
      
    data1 = Left(data1, 4) & "  " & Right(data1, 2)
    If .ListCount > 0 Then .Value = data1
        
    If .ListIndex = -1 And data1 <> "  " Then
        .AddItem data1
        .List(.ListCount - 1, 1) = X
        
        ComboBox2.AddItem data1
        ComboBox2.List(ComboBox2.ListCount - 1, 1) = X ' numero colonne
    End If
Next X
    .Style = 2
    .Value = ""
    
End With

ComboBox2.Style = 2

End Sub

IL faudra supprimer le premier combobox(3)

A tester

JP
 
- 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
9
Affichages
524
Réponses
7
Affichages
554
Réponses
16
Affichages
1 K
Réponses
21
Affichages
2 K
Réponses
250
Affichages
16 K
Réponses
10
Affichages
801
Retour