XL 2010 [RESOLU] Cherche solution pour code VBA

  • Initiateur de la discussion Initiateur de la discussion riton00
  • Date de début Date de début

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 !

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

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

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
 
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

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:
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
 
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
 
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:
- 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
2
Affichages
366
Réponses
9
Affichages
195
Réponses
20
Affichages
313
Réponses
4
Affichages
213
Retour