Tableau et variables de différentes valeurs

Bonjour,

Ci-dessous le code de ma macro

Private Sub PRIMES()
Dim ANNEE As Integer
Dim ANNEE_PREC As Integer
Dim NoDerLigne As Integer
Dim TableauNPREC(1 To 12) As Double 'tableau des 12 mois
Dim ChoixFeuille As Worksheet 'Choix de la feuille
Dim NoLigne As Integer
Dim NoMoisNPREC As Integer
Dim MontantNPREC As Double
Dim NATURE As String
Dim PRODUIT As String

Dim I As Integer
Dim MOIS As Integer
Dim datedebnprec As Date
Dim datefinnprec As Date

NATURE = "TTT"
PRODUIT = "A"

ANNEE = Sheets("Accueil").Range("AQ1").Value
ANNEE_PREC = ANNEE - 1
Set ChoixFeuille = Worksheets("Feuil1")

'dernière ligne de l'onglet base base
NoDerLigne = ChoixFeuille.Range("A" & Rows.Count).End(xlUp).Row

'On definit les mois de l'année N-1
For MOIS = 1 To 12
datedebnprec = DateSerial(ANNEE_PREC, MOIS, 1)
datefinnprec = DateSerial(ANNEE_PREC, MOIS + 1, 1)

For NoLigne = 2 To NoDerLigne
If ChoixFeuille.Range("AC" & NoLigne) >= datedebnprec And ChoixFeuille.Range("AC" & NoLigne) < datefinnprec And ChoixFeuille.Range("I" & NoLigne) = NATURE And ChoixFeuille.Range("O" & NoLigne) = PRODUIT Then

'parcours de toutes les lignes de l'onglet base
NoMoisNPREC = Month(ChoixFeuille.Range("AC" & NoLigne).Value)
MontantNPREC = ChoixFeuille.Range("D" & NoLigne).Value
TableauNPREC(NoMoisNPREC) = TableauNPREC(NoMoisNPREC) + MontantNPREC
End If

Next NoLigne
Next MOIS

'écriture du résultat
For I = 1 To 12
Controls("TextBox" & I + 58).Value = TableauNPREC(I)
Controls("TextBox" & I + 58) = Format(Controls("TextBox" & I + 58), "### ### ##0")
Next I

Dim somme As Long
somme = 0
For I = 1 To 12
somme = somme + Val(Controls("TextBox" & I + 58).Value)
Next I
TextBox71.Value = somme
Controls("TextBox71") = Format(Controls("TextBox71"), "### ### ##0")

Set ChoixFeuille = Nothing

End Sub

Ce code fonctionne bien.

Mon souci se trouve dans la variable "PRODUIT".

Ici PRODUIT= "A".

Il faudrait que je puisse avoir quelque chose du genre:

PRODUIT= "A" or "B" or "C"............ (il peut y avoir 15 valeurs) ou

PRODUIT= Array ("A","B", "C"........)

Mais cela ne fonctionne pas.

J'ai un message "Erreur d'exécution 13 - Incompatibilité de type .

Quelqu'un aurait une idée ?

D'avance Merci.

Bonjour,

Pourquoi ne pas passer ton argument par ByVal dans ta procédure ...

Sub Primes(ByVal Produit As String)

Il ne te reste qu'à adapter l'appel à ta macro ...

Bonjour,

Merci pour ta réponse.

Je ne peux voir si cela fonctionne car je n'arrive plus à lancer la macro.

J'imagine que c'est ce que tu voulais dire par "adapter l'appel à ta macro.."

Le lancement de la macro se faisait par Userform initialize où je mettais juste le nom de la macro.

Le message d'erreur que j'ai maintenant est "Erreur de compilation - Argument non facultatif"

Je ne connais pas ByVal et comment cela fonctionne.

Merci de ton aide

Re,

Effectivement, tu as raison ...

Tu dois adapter dans ta UserForm l'instruction de lancement avec le Produit (qui est donc variable) et qui devenu le paramètre de ta macro ...

Application.Run NomMacro, Paramètre

Si tu rencontres des difficultés, il faudra que tu postes le code de ta UserForm ...

Bonjour,

Je coince .

Si j'ai bien compris, avec byval, la macro devient:

Private Sub PRIMES(ByVal Produit As String)

Auparavant, pour lancer ma macro, je la mettais dans Userform initiaze sous forme:

Private Sub UserForm_Initialize()
PRIMES
End Sub

Si je remplace par:

Private Sub UserForm_Initialize()
Application.Run ("PRIMES", "PRODUIT)
End Sub

J'ai un message d'erreur "Attendu: ="

Où est le problème ? (je suis avec excel 2003)

En cherchant une solution, j'ai lu que le "byval" pouvait ralentir l'execution de la macro

Est ce vrai ?

J'aurais à prendre en compte d'autres critères dans d'autres colonnes.

Je mets en pièce jointe un fichier précisant ce que je cherche à titre d'exemple.

Le code mis en début de post fonctionne mais si j'augmente les critères de choix, je coince.

Le fichier joint donne bien les montants mensuels globaux

Mais je souhaite obtenir les montant pour les "vendeurs de jouets" dont la liste peut être longue, concernant les articles de Noel (dont la liste peut être longue).

Je crois que c'est parce que je ne maitrise pas bien les tableau.

Merci de votre aide

28essairec.zip (10.93 Ko)

Bonjour,

Le fichier que tu as joint ... me laisse très perplexe ...

Est-ce un fichier très tronqué ... ? Car, je ne comprends pas du tout comment il pourait fonctionner ...???

Bonjour,

C'est effectivement un fichier simplifié à titre d'exemple.

La feuille1 sert de base de données.

En l'état, lorsque l'on clique sur le bouton 1, un usf s'ouvre.

On a une "colonne" pour 2013 et une pour 2014.

Chaque "ligne" fait apparaitre l'activité mensuelle, et la dernière le total.

Pour Janvier 2013 on a un résultat de 40.

Ce résultat correspond au montant réalisé en janvier 2013. C'est le code actuel, qui ne prend en compte que la colonne montant et date.

Je souhaiterais modifier le code en prenant en compte la colonne Nom et produit pour répondre à la question du type:

Quel est le montant vendu par les Vendeurs de jouets (= Charles, Bernard,.....=...liste à définir), concernant les produits de noel (=A,B......= liste à définir) pendant le mois de Janvier 2013 ?

Vois tu ce que cherche à faire ?

Merci de ton aide

Bonjour,

Je comprends ton objectif final ...

Ma recommendation serait qu'avant de te compliquer la vie ... tu commences par le début ...

De mon point de vue, il serait pertinent d'oublier ta UserForm ... et de te concentrer sur la façon de faire fonctionner le filtrage des données ...

Ensuite, tu auras tout le temps de programmer l'aspect cosmétique ... si le besoin s'en fait sentir ...

Re,

Mon projet est déjà bien avancé, mais je bloque sur ce point et j'aimerais bien le résoudre.

Même par simple curiosité je souhaiterais savoir comment cela se fait.

J'ai un fichier excel qui me donne les résultats, mais cela ne me convient pas

Si tu as une solution, je suis preneur.

Merci

Re,

Il n'y a aucune curiosité mal placée ...

La UserForm, pour réaliser ce que tu veux, va avoir besoin d'une macro qui .... effectue le filtrage ...

Bonjour,

J'étudie la question et reviendrai sur le forum si problème.

Merci

Bonjour,

Pas de problème ...

A bientôt sur le Forum ...

Rechercher des sujets similaires à "tableau variables differentes valeurs"