Bonjour,
c’est mon premier message dans ce forum.
J’ai déjà fait 2, 3 macros mais on peut dire que je suis un grand débutant et je vais essayer d'être le plus clair possible.
Depuis un logiciel de gestion j'extrais un tableau avec mes factures clients et fournisseurs pour l'année en cours.
L'idée est de créer un onglet par mois avec deux tableaux, un avec les encaissements et l'autre avec les décaissements et ensuite d'y ajouter des formules de calculs divers.
J'en suis à la première étape, à savoir extraire les donner et les coller dans l'onglet du mois correspondant
Ci-dessous le code que j'ai fait pour janvier, un double "If" avec 2 conditions
- la date est-elle en janvier ?
- Si oui, si la valeur de la facture est positive, coller la ligne dans l'onglet encaissements JAN,
- sinon, coller la ligne dans l'onglet décaissements JAN_C
Le code fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Dim Lig As Long Dim Col As String Dim ColG As String Dim NbrLig As Long Dim NumLig As Long Col = "D" ' colonne de la donnée à tester ColG = "G" NumLig = 0 With Sheets("Général") ' feuille source NbrLig = .Cells(65536, Col).End(xlUp).Row For Lig = 1 To NbrLig If .Cells(Lig, Col).Value Like "*/01/*" Then If .Cells(Lig, ColG).Value > 0 Then Sheets("JAN").Activate ' feuille de destination .Cells(Lig, Col).EntireRow.Copy NumLig = NumLig + 1 Cells(NumLig, 1).Select ActiveSheet.Paste Else Sheets("JAN_C").Activate ' feuille de destination .Cells(Lig, Col).EntireRow.Copy NumLig = NumLig + 1 Cells(NumLig, 1).Select ActiveSheet.Paste End If End If
J'aimerais passer à l'étape suivante, à savoir faire la même chose mais dans un seul onglet avec à gauche les encaissements et à droite les décaissements.
- la date est-elle en janvier ?
- Si oui, si la valeur de la facture est positive, coller la ligne dans l'onglet JAN dans le tableau de gauche
- sinon, coller la ligne dans l'onglet JAN dans le tableau de droite
Il ne faut plus que je copie la ligne entière mais juste la partie qui m'intéresse (le tableau va des colonnes A à J)
Donc il faut que je modifie la ligne Cells(Lig, Col).EntireRow.Copy mais je n'ai pas réussi à faire quelque chose qui marche
Et pour coller le tableau des décaissements à droite, j'imagine qu'il faut jouer sur cette ligne de code mais idem pas encore réussi
Cells(NumLig, 1).Select
ActiveSheet.Paste
Merci d'avance pour votre aide !!!
Et puis si vous avez des critiques sur le code existant je prends aussi !
Bonne journée à tous/tes
Partager