XL 2010 [RESOLU] Cherche solution pour code VBA

riton00

XLDnaute Impliqué
Bonjour,

Qui pourrais me solutionner la suite de mon code VBA, voir descriptif dans le fichier

En vous remerciant par avance

Slts
 

Pièces jointes

  • essai.xlsm
    30.7 KB · Affichages: 34

riton00

XLDnaute Impliqué
Re Lone-wolf

Merci de t'intéresser à mon à mon problème, mais en fait c'est bien dans MEMO que je souhaite enregistrer le contenu de certaines cellules, et pas dans PRODUITS, en fait MEMO c'est une sorte de récapitulation pour chaque facture j'ai remis mon fichier avec juste la modif des items dans l'onglet MEMO cellule K1:T1

Merci
 

Pièces jointes

  • essai.xlsm
    30.7 KB · Affichages: 36

Dranreb

XLDnaute Barbatruc
Bonjour.
Avec la référence Microsoft Scripting Runtime cochée c'est quelque chose comme ça :
VB:
Sub Resumer()
Dim Titres(), Dic As New Dictionary, C As Long, TFact(), L As Long, TRés()
Titres = Feuil4.[A1:T1].Value
For C = 11 To UBound(Titres, 2): Dic(Titres(1, C)) = C: Next C
TFact = Feuil1.[A12:I32].Value
ReDim TRés(1 To 1, 1 To UBound(Titres, 2))
TRés(1, 1) = TFact(1, 2)
TRés(1, 2) = TFact(1, 1)

TRés(1, 4) = TFact(19, 9)
TRés(1, 5) = TFact(17, 9)
TRés(1, 6) = TFact(19, 9)
TRés(1, 7) = TFact(19, 4)

TRés(1, 9) = TFact(20, 4)
TRés(1, 10) = TFact(21, 4)
For L = 4 To 16
   If Dic.Exists(TFact(L, 1)) Then C = Dic(TFact(L, 1)): TRés(1, C) = TRés(1, C) + TFact(L, 6)
   Next L
Feuil4.Cells(&H100000, 1).End(xlUp).Offset(1).Resize(, UBound(TRés, 2)).Value = TRés
End Sub
 

riton00

XLDnaute Impliqué
Bonjour Dranreb, pierrejean et Lone-wolf

Merci beaucoup de m'avoir aidé à trouver une solution à mon problème, personnellement je préfère la version de Dranreb qui enregistre les données dans une seule ligne et comme je le désirais, par contre je reviens vers Dranreb pour me modifier son code qui apparemment est décalé au niveau des TVA voir le fichier joint

Merci

Slts
 

Pièces jointes

  • essai dranreb.xlsm
    36 KB · Affichages: 42

Dranreb

XLDnaute Barbatruc
Oui, j'ai pu me tromper dans les numéros de ligne ou de colonnes de TFact qui est un tableau 2D basé 1 des valeurs de la plage A12:I32 de Feuil1. Essayez de corriger vous même plus vite que moi.
À +

Edit: N'aurez vous que les lignes de taux de TVA appliqués dans la factures dans la partie A20: D32 de la facture ?
Dans ce cas il faudrait peut être prévoir de prendre une ligne de plus pour le cas où il y aurait les 4, non ?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Peut être comme ça ? :
VB:
Sub Resumer()
Dim Titres(), Dic As New Dictionary, C As Long, TFact(), L As Long, TRés()
Titres = Feuil4.[A1:T1].Value
For C = 11 To UBound(Titres, 2): Dic(Titres(1, C)) = C: Next C
TFact = Feuil1.[A12:I33].Value
ReDim TRés(1 To 1, 1 To UBound(Titres, 2))
TRés(1, 1) = TFact(1, 2)
TRés(1, 2) = TFact(1, 1)

TRés(1, 4) = TFact(19, 9)
TRés(1, 5) = TFact(17, 9)
For L = 19 To 22
   Select Case Int(TFact(L, 3) * 1000 + 0.5) / 10
      Case 5.5: C = 6: Case 7: C = 7: Case 10: C = 8: Case 20: C = 9
      Case Else: C = 0: End Select
   If C > 0 Then TRés(1, C) = TFact(L, 4)
   Next L
For L = 4 To 16
   If Dic.Exists(TFact(L, 1)) Then C = Dic(TFact(L, 1)): TRés(1, C) = TRés(1, C) + TFact(L, 6)
   Next L
Feuil4.Cells(&H100000, 1).End(xlUp).Offset(1).Resize(, UBound(TRés, 2)).Value = TRés
Dim N
On Error GoTo NuméroUn
N = Right(Range("b12").Value, 5)
Range("B12").Value = "" & Year(Date) & "/" & Format(N + 1, "00000")
Exit Sub
NuméroUn:
Range("b12").Value = "" & Year(Date) & "/" & Format(1, "00000")
Resume Next
End Sub
 

riton00

XLDnaute Impliqué
Re Dranreb

Merci pour votre dernière moulure qui me va au top, par contre je n'arrive pas à voir comment retrouver = TFact(1, 2) ou = TFact(1, 1) ou = TFact(19, 9) ou = TFact(17, 9) puisque si j'essai de comprendre = TFact(19, 9) équivaut à 157,37€ dans FACTURE mais comment faire pour se retrouver avec (19,9) j'ai beau à calculer le nombre de cellule mais!! je ne trouve pas

Merci pour une petite explication
 

Dranreb

XLDnaute Barbatruc
Dans la feuille FACTURE Mettez peut être en J12, à propager sur 22 lignes :
Code:
=LIGNE()-11
et en A34, à propager sur 9 colonnes :
Code:
=COLONNE()
Comme ça vous verrez sur la feuille quelle ligne et quelle colonne spécifier pour atteindre la valeur d'une cellule
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 046
Messages
2 084 850
Membres
102 686
dernier inscrit
Franck6950