Format date Et changement valeur celulles
bonjour le forum
je reviens vers vous pour un petit problème que je n'arrive pas a ressoudre.
En ayant un code VBA qui me permet de filtrer les données de plusieurs client sur une autre feuille (Compta) , ce qui ai réussi quand je lance ma macro, mes données s'affiche bien sauf pour la cellule date (A1) La moitie de ma feuil1 Excel affiche les bonnes date tandis que l'autre moitié m'affiche des dates inversé (Voir exemple ci dessous ) 01/03/2022 devrait s'afficher en 03/01/2022
et deuxième problème dans ma colonne Code journal je dois afficher que "VE" sur toutes les lignes
Est ce que quelqu'un pourrait m'aider ? s'il vous plait
cordialement
Ps: Voici mon code permettant de comptabilisé et de filtrer
Sub comptabiliser()
Dim F1 As Worksheet
Dim F2 As Worksheet
Set F1 = Sheets("Feuil1")
Set F2 = Sheets("Compta")
Dim Tablo
F2.Cells.ClearContents
Dim i As Long
Application.ScreenUpdating = False
Tablo = F1.Range("A2", "Z" & F1.Range("A" & Rows.Count).End(xlUp).Row)
F2.Cells(1, 1).Resize(1, 8) = Array("Date", "code journal", "compte", "débit", "crédit", "Libellé pièce", "Pièce", "référence pièce")
Set d = CreateObject("Scripting.Dictionary")
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(Tablo)
clé = Tablo(i, 2) & "|" & Tablo(i, 9) & "|" & "70600000" & "|" & "" & "|" & Tablo(i, 10) & "" & "|" & Tablo(i, 6) & "|" & Tablo(i, 1) & "|" & Tablo(i, 9)
clé1 = Tablo(i, 2) & "|" & Tablo(i, 9) & "|" & "44571200" & "|" & "" & "|" & Tablo(i, 11) & "" & "|" & Tablo(i, 6) & "|" & Tablo(i, 1) & "|" & Tablo(i, 9)
clé2 = Tablo(i, 2) & "|" & Tablo(i, 9) & "|" & "411" & Tablo(i, 5) & "|" & Tablo(i, 12) & "" & "|" & "" & "|" & Tablo(i, 6) & "|" & Tablo(i, 1) & "|" & Tablo(i, 9)
d(clé) = d(clé)
d1(clé1) = d1(clé1)
d2(clé2) = d2(clé2)
Next i
F2.Range("A2").Resize(d.Count) = Application.Transpose(d.keys)
F2.Range("A2").Resize(d.Count).TextToColumns Other:=1, DataType:=xlDelimited, OtherChar:="|"
j = F2.Cells(Rows.Count, 1).End(xlUp).Row + 1
F2.Range("A" & j).Resize(d.Count) = Application.Transpose(d1.keys)
F2.Range("A" & j).Resize(d.Count).TextToColumns Other:=1, DataType:=xlDelimited, OtherChar:="|"
L = F2.Cells(Rows.Count, 1).End(xlUp).Row + 1
F2.Range("A" & L).Resize(d.Count) = Application.Transpose(d2.keys)
F2.Range("A" & L).Resize(d.Count).TextToColumns Other:=1, DataType:=xlDelimited, OtherChar:="|"
F2.Select
Call flitrer
Application.ScreenUpdating = True
End Sub
Sub flitrer()
Dim DerLig As Long
Application.ScreenUpdating = False
With Sheets("Compta")
.Select
.AutoFilterMode = False
DerLig = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A1:H" & DerLig).Select
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("G1:G" & DerLig) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("A1:H" & DerLig)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End SubBonjour,
Fournir un fichier permettant d'exécuter la macro SVP
A+
bonjour,
avec des valeurs dates et currency , c'est mieux d'utiliser ".value2"
Tablo = F1.Range("A2", "Z" & F1.Range("A" & Rows.Count).End(xlUp).Row).Value2
Ca fonctionne merci il me manquait juste ca
Merci beaucoup
vous m'avez fais comprendre mon erreur
et savez comment changer la valeur des cellules " code journal" pour que ca affiche "VE" sur toute la ligne
re,
un code plus efficace
votre dernier remarque "VE" dans code journal = remplacer Tablo(i,9) par "VE" dans les 3 lignes Dict.add ....
Sub comptabiliser()
Dim F1 As Worksheet, F2 As Worksheet
Dim Tablo, i As Long
Set F1 = Sheets("Feuil1")
Set F2 = Sheets("Feuil2")
Tablo = F1.Range("A2", "Z" & F1.Range("A" & Rows.Count).End(xlUp).Row).Value2
Set dict = CreateObject("scripting.dictionary")
dict.Add dict.Count, Array("Date", "code journal", "compte", "débit", "crédit", "Libellé pièce", "Pièce", "référence pièce") 'les titles
For i = 1 To UBound(Tablo) 'IMPORTANT, CHAQUE LIGNE DOIT AJOUTER LE MÊME NOMBRE D'ELEMENTS DANS "ITEMS" = 8 !!!
dict.Add dict.Count, Array(Tablo(i, 2), Tablo(i, 9), "70600000", "", Tablo(i, 10), Tablo(i, 6), Tablo(i, 1), Tablo(i, 9))
dict.Add dict.Count, Array(Tablo(i, 2), Tablo(i, 9), "44571200", "", Tablo(i, 11), Tablo(i, 6), Tablo(i, 1), Tablo(i, 9))
dict.Add dict.Count, Array(Tablo(i, 2), Tablo(i, 9), "411" & Tablo(i, 5), Tablo(i, 12), "", Tablo(i, 6), Tablo(i, 1), Tablo(i, 9))
Next i
arr = Application.Index(dict.items, 0, 0)
F2.Cells.ClearContents
With F2.Range("A1").Resize(UBound(arr), UBound(arr, 2))
.Value = arr
.EntireColumn.AutoFit
.Sort .Range("G1"), xlAscending, Header:=xlYes
End With
End SubCa fonctionne Merci beaucoup
grace a vous je vais devenir pro Excel VBa