monaldinho
Messages postés74Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention25 octobre 2007
-
30 août 2007 à 12:39
tubafat
Messages postés79Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention25 septembre 2007
-
30 août 2007 à 16:19
bonjour.
j'ai deux feuilles: feuille1 (avec toutes les données) et feuille2 (feuille vide dans laquelle je vais insérés certaines données en m'appuyant de la feuille1).
voici comment est composé la feuille 1:
colonne1: dates, colonne 2: codes clients, colonne 3: types , colonne 4 à colonne 9: valeurs
voici comment est composé la feuille 2:
colonne1: codes clients, ligne 2: dates de la période d'etude
ce que j'aimerais faire:
mettre dans chaque cases du tableau de la feuille2 (ayant en vertical le code clien et en horizontal les date) la somme correspondante: la somme des valeurs des colonnes 4 à 9 de la feuille1.
voila le procédé :
on a le code client et la date dans la feuille 2.
on cherche la ligne de la feuille 1 qui a le bon code client, la bone date, le type "SC" , et on
met dans la feuille2, a l'intersection du code client et de la date, la somme des valeurs.
j'ai l'impression de ne pas etre clair...
je vous met mon code ( qui ne marche pas, je ne sais pas pourquoi! ) :
Dim id_cherche As String
Dim date_cherche As Date
Dim ligne As Integer
Dim colonne As Integer
Dim Derlig As Integer
Dim DerCol As Integer
Dim DerCell_NonVide As String
Dim Type_Cherche As String
Set C = .Find(id_cherche, LookIn:=xlValues)
Set d = .Find(date_cherche, LookIn:=xlValues)
' Set Tt = .Find("SC", LookIn:=xlValues)
If (Not C Is Nothing) Then
firstAddress = C.Address
Do
If (Not C Is Nothing) And (Not d Is Nothing) And (Not Tt Is Nothing) Then
ligne = C.Row
colonne = d.Column
feuille2.Cells(ligne, colonne) = Application.WorksheetFunction.Sum(feuille1.Range("D" & i & ":" & "I" & i & ""))
Set C = .FindNext(C)
Set d = .FindNext(d)
End If
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End With
Next i
si quelqu'un a une solution, pleaseeeeeeee help me !
thanks!
Monaldinho.
faites comme moi, éssayer d'éviter le coté obscur de la force
monaldinho
Messages postés74Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention25 octobre 2007 30 août 2007 à 16:14
arg...
escuse moi, il est vrai, c'est pluto colone1: date, colonne2: type et colone3: code client.
j'ecris feuille1 parce ke j'ai déclaré la feuille o debut de mon code.
je suis dsl de pas avoir été assez complet.
j'ai vu que ca marché seulement quand je mettait toute les dates en periode d'etude.
jai testé le code en triant la feuille1 par "type" et ca à l'air de marché...
j'ai les bon resulats. voici le code : ( en rouge ce que j'ai ajouté par rapport au précédent ) :
Trier_Par_Type_Operation 'procedure qui trie les données par rapport au type
Dim id_cherche As String
Dim Date_Cherche As Date
Dim ligne As Integer
Dim colonne As Integer
Dim Derlig As Integer
Dim DerCol As Integer
Dim DerCell_NonVide As String
Dim Type_Cherche As String
Set C = .Find(id_cherche, LookIn:=xlValues)
Set d = .Find(Date_Cherche, LookIn:=xlValues)
If (Not C Is Nothing) And (Not d Is Nothing) Then
firstAddress = C.Address
secondAddress = d.Address
Do
If (Not C Is Nothing) And (Not d Is Nothing) And (Not Tt Is Nothing) Then
ligne = C.Row
colonne = d.Column
'MsgBox "bo goss"
feuille2.Cells(ligne, colonne) = Application.WorksheetFunction.Sum(feuille1.Range("D" & i & ":" & "I" & i & ""))
Set C = .FindNext(C)
Set d = .FindNext(d)
End If
Loop While Not C Is Nothing And C.Address <> firstAddress And d.Address <> secondAddress
End If
End With
Next i
Trier_Par_Date 'procedure qui trie par rapport à la date
j'ai decouvert cette fonction hier, et c'est hyper pratique... quand on la maitrise! lol
faut que j'affine un peu mon code, car c'est pas encore top...
en tout cas merci beaucoup de ton aide tubafat!!!
c'est super cool de ta part !
Monaldinho.
faites comme moi, éssayer d'éviter le coté obscur de la force
monaldinho
Messages postés74Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention25 octobre 2007 30 août 2007 à 15:06
hello tubafat !
il n'y a pas de message d'erreur.
il n'y a rien qui se produit.
au debut j'avais un code avec plein de boucle while et if, la compilation se faisait apres un temp trop long!
on m'a proposé de tout remplacer par la fonction FIND, pour amélioré le temps de compilation.
ca va plus vite c'est vrai... mais ca ne me donne aucun résultat...
je suis perdu la.
je vois pas quoi rajouter pour que les résultats s'affichent.
Monaldinho
faites comme moi, éssayer d'éviter le coté obscur de la force
tubafat
Messages postés79Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention25 septembre 2007 30 août 2007 à 15:50
Alors après avoir bien regardé ton code, plusieurs points m'interpellent:
- dans ton descriptif tu dis que :"colonne1: dates, colonne 2: codes clients, colonne 3: types " mais dans ton code: id_cherche = feuille1.Cells(i, 3) 'colonne 3
date_cherche = feuille1.Cells(i, 1) 'colonne 1
'Type_Cherche = feuille1.Cells(i, 2) 'colonne 2
- tu écris par exemple: feuille1.Cells(i, 3), ne sfaudrait-il pas plutôt écrire Worksheets("feuille1").cells(i,3) ?
Pour le rest, j'ai testé, chez moi ça marche bien pour la première valeur trouvé et après ça fait du grand n'importe quoi...
J'espère que tu trouveras une meilleure aide. En attendant je continue à chercher.
@+
Tubafat
Vous n’avez pas trouvé la réponse que vous recherchez ?