Bonjour
Au vu du fichier que vous avez donné, voici ce que vous pouvez faire
1. Etape 1
- Allez dans l'éditeur VBA --> Module 1
- En dessous de la macro Conversion, mettez le code ci-dessous
Sub Formatter()
Dim dlg As Integer
Application.ScreenUpdating = False
With Worksheets("Importation")
dlg = .Range("A" & .Rows.Count).End(xlUp).Row
.Range("A4:A" & dlg).NumberFormat = "m/d/yyyy"
.Range("C4:C" & dlg).Delete
.Range("C4:C" & dlg).NumberFormat = "#,##0.00 $"
End With
With Worksheets("Importation").Sort
.SortFields.Clear
.SortFields.Add Key:=Worksheets("Importation").Range("A4:A" & dlg), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Worksheets("Importation").Range("A3:C" & dlg)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Application.ScreenUpdating = True
End Sub
2. Etape 2
- Allez dans la feuille Importation
- Remplacez le code Importationdansmensualisation par celui ci-dessousSub ImportationDansMensualisation()Dim DateTransaction As Date
Sub ImportationDansMensualisation()
Dim DateTransaction As Date
Dim Montant As Single
Dim MoisTransaction As Byte
Dim LigneVide As Long
Dim ObjetTransaction As String
Dim Dligne As Long
Dim i As Long
'-------Lignes desactivees car importation donnees depuis fichier XLS -------
'On verifie qu'un mois a ete choisi et on l'enregistre
'If Sheets("Importation").Range("A1").Value = "" Then
' MsgBox ("Veuillez choisir un mois")
' Exit Sub
'Else
' MoisTransaction = Month(DateValue("01 " & Sheets("Importation").Range("A1").Value & " 2020"))
'End If
'On cherche la derniere ligne de l'importationn
Dligne = Sheets("Importation").Cells(Rows.Count, 1).End(xlUp).Row
'on boucle depuis la ligne jusque la derniere ligne
For i = 4 To Dligne
'----- ligne "Datetransaction = ...." desactivee car importation donnees depuis fichier XLS
'on enregistre la date
'DateTransaction = DateSerial(Year(Now()), MoisTransaction, Sheets("Importation").Cells(i, 1).Value)
'on enregistre la date - Importation depuis fichier XLS
DateTransaction = DateSerial(Year(Cells(i, 1)), Month(Cells(i, 1)), Day(Cells(i, 1)))
MoisTransaction = Month(DateTransaction)
'on enregistre le montant et on lance la recherche du montant dans Mensualisation
Montant = Sheets("Importation").Cells(i, 3).Value
ObjetTransaction = Sheets("Importation").Cells(i, 2).Value
Call RechercheImportationDansMensualisation(MoisTransaction, DateTransaction, Montant, ObjetTransaction)
Next i
MsgBox "Importation faite"
End Sub
J'ai désactivé quelques lignes qui ne servent plus. Par contre je ne les ai pas supprimées pour le cas où vous voudriez revenir à l'ancienne manière de procéder.
3 . Etape 3
- Le bouton Convertir sur votre feuille doit être affecté à la macro Sub Formatter()
- Vous pouvez aussi ajouter un autre bouton supplémentaire mais le mieux est peut-être de changer uniquement le nom du bouton pour éviter de vous trompez.
4. Utilisation
- ouvrez votre fichier XLS
- Copiez les données depuis A1 jusque la colonne D. Attention que vous devez toujours avoir 4 colonnes et que la colonne des montants est toujours en colonne D
- Collez les données en A4 dans la feuille Importation
Il vous reste à cliquer sur le bouton Formatter que vous avez créé à l'étape 3 puis sur le bouton Importation habituel
Rem : Le choix du mois en A1 n'est plus nécessaire