cs_davidjoe1
Messages postés2Date d'inscriptionlundi 18 septembre 2006StatutMembreDernière intervention19 septembre 2006
-
18 sept. 2006 à 23:14
cs_davidjoe1
Messages postés2Date d'inscriptionlundi 18 septembre 2006StatutMembreDernière intervention19 septembre 2006
-
19 sept. 2006 à 07:57
Bonjour a tous,
je suis presque débutant en VBA et j'ai besoin d'un peu d'aide.
Je vous présente mon problème :
j'ai une plage de données s'apparentant à un fichier client se présentant comme suit :
Les clients sont associés à des montants placés dans des colonnes qui définissent une catégorie. Un client peut donc etre classé en CAT1 pour 100 et en CAT2 pour 200.
et je veux arriver à dédoubler les lignes de façon à ce que une seule catégorie apparaisse par ligne. Une ligne associerait donc un client à une catégorie pour un montant correspondant.
Avec l'exemple précédant, cela donnerait :
Cette manipulation me pose beaucoup de probleme car je suis obligé de l'éxécuter manuellement et cela me pose beaucoup de problemes.
Je vous remercie infiniment de toute l'aide que vous pourrez m'apporter.
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 19 sept. 2006 à 07:18
Salut,
J' ai peut être une solution.
Je te l' expose sommairement sans entrer dans les détails.
Supposons que T1 est ton tableau initial,
et que tu veux transposer le résultat dans T2.
1° Fais d' abord une fonction qui retourne la catégorie
d' un Client selon le montant d' une cellule CAT:
Exemple :
Function FCAT(xMt as Currency) as Integer
If xMt=0 Then
FCAT=0
ElseIf (xMt>0) AND (xMt<=100) Then
FCAT=1
ElseIf (xMt>100) AND (xMt<=200) Then
FCAT=2
etc...
End If
(Tu peux utiliser Select Case
End Function
2° Tu parcours ton tableau T1 ligne par ligne
Pour chaque ligne tu fais appel à ta fonction FCAT trois fois
pour tester sur le contenu des colonnes CAT1, CAT2 et CAT3.
If FCAT(contenu de CAT1)>0 'cellule non vide
tu ajoutes une ligne dans T2 avec
RefClient NomClient CAT Montant
le résultat de FCAT le contenu de CAT1
ABC ***** 1 100
puis
If FCAT(contenu de CAT2)>0 'cellule non vide
tu ajoutes une ligne dans T2 avec
RefClient NomClient CAT Montant
le résultat de FCAT le contenu de CAT2
ABC ***** 2 200
puis
If FCAT(contenu de CAT3)>0 'cellule non vide
tu ajoutes une ligne dans T2 avec
RefClient NomClient CAT Montant
le résultat de FCAT le contenu de CAT3
GHR $$$$$ 1 75
(initialement 3)
Tu passes à la ligne suivante de T1
Et tu refais les trois tests
Ainsi de suite...
A première vue , ça me semble correct,
à toi de voir si ça marche.