Question avec la fonction SI
Résolu/Fermé
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
-
5 avril 2016 à 21:30
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 - 6 avril 2016 à 20:25
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 - 6 avril 2016 à 20:25
A voir également:
- Question avec la fonction SI
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction remplacer word - Guide
- Équivalent fonction filtre excel 2016 - Forum Excel
15 réponses
MrYAU31
Messages postés
3808
Date d'inscription
samedi 23 février 2013
Statut
Membre
Dernière intervention
8 juillet 2017
1 614
5 avril 2016 à 21:38
5 avril 2016 à 21:38
Bonjour,
Ton export ne serait un fichier txt avec des séparateurs genre ; ou tabulation ?
Si oui, il te faut importer le fichier sous Excel pour retrouver tes colonnes.
Ton export ne serait un fichier txt avec des séparateurs genre ; ou tabulation ?
Si oui, il te faut importer le fichier sous Excel pour retrouver tes colonnes.
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 429
5 avril 2016 à 21:53
5 avril 2016 à 21:53
Bonjour
Une solution avec macro (dans Feuil2)
A y être on pourrait automatiser la démarche depuis le fichier initial (texte ou excel)
http://www.cjoint.com/c/FDftZgEFnfq
Cdlmnt
Une solution avec macro (dans Feuil2)
A y être on pourrait automatiser la démarche depuis le fichier initial (texte ou excel)
http://www.cjoint.com/c/FDftZgEFnfq
Cdlmnt
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
6 avril 2016 à 13:42
6 avril 2016 à 13:42
bonjour,
il y a effectivement des séparateurs avec des virgules. et j'ai aussi importé dans Excel, que j'ai converti et récupéré les colonnes. Mais comme je le disais, les dépôts et les retraits se retrouvent toutes dans la même colonne.
ccm81, ta macro est parfaite. C'est exactement ce dont j'avais besoin.
Mais comme je voulais justement faire une macro pour trier le tout, est-ce facile d'insérer ta macro dans la mienne ? à partir d'où dois-je copier le texte du VBA ? est-ce à partir de Option Explicit ou Public sub ?
merci
il y a effectivement des séparateurs avec des virgules. et j'ai aussi importé dans Excel, que j'ai converti et récupéré les colonnes. Mais comme je le disais, les dépôts et les retraits se retrouvent toutes dans la même colonne.
ccm81, ta macro est parfaite. C'est exactement ce dont j'avais besoin.
Mais comme je voulais justement faire une macro pour trier le tout, est-ce facile d'insérer ta macro dans la mienne ? à partir d'où dois-je copier le texte du VBA ? est-ce à partir de Option Explicit ou Public sub ?
merci
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
6 avril 2016 à 14:14
6 avril 2016 à 14:14
j'ai un bug. J'ai donc pas dû copier comme il faut ta macro dans la mienne. Je te joins le vrai fichier. J'ai dû modifier un peu car il y avait des info confidentielles dedans (numéro de compte, des noms, etc..)
Ma macro fait un premier tri de colonnes inutiles et la 2e étape est justement d'utiliser ta macro. Mais je n'ai pas terminé après car j'ai plein de triage à faire. Mais si tu exécutes ma macro, tu verras où est le bug.
merci
https://www.cjoint.com/c/FDgmoaViLLV
Ma macro fait un premier tri de colonnes inutiles et la 2e étape est justement d'utiliser ta macro. Mais je n'ai pas terminé après car j'ai plein de triage à faire. Mais si tu exécutes ma macro, tu verras où est le bug.
merci
https://www.cjoint.com/c/FDgmoaViLLV
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 429
6 avril 2016 à 16:32
6 avril 2016 à 16:32
Difficile de voir où sont les colonnes à prendre en compte
1. Tu mets ceci dans Module 1
2. Tu modifies les valeurs des constantes Const lideb ...) avec tes n° de colonnes
3. Tu complètes ta macro Tri
4. Avant End Sub (de ta macro tri), tu fais un applel à la procédure OK
Cdlmnt
1. Tu mets ceci dans Module 1
2. Tu modifies les valeurs des constantes Const lideb ...) avec tes n° de colonnes
3. Tu complètes ta macro Tri
4. Avant End Sub (de ta macro tri), tu fais un applel à la procédure OK
Const lideb = 1 ' premiere ligne à traite
Const cocode = 2 ' colonne code 1 (depot) ou 0 (retrait)
Const codepot = 5 ' colonne retrait où tous les montants sont au départ
Const coretrait = 4 ' colonne retrait
Public Sub OK()
Dim li As Long, co As Long, lifin As Long
With ActiveSheet
lifin = .Cells(Rows.Count, 1).End(xlUp).Row
For li = lideb To lifin
If .Cells(li, cocode).Value = 1 Then
.Cells(li, codepot).Value = .Cells(li, coretrait).Value
.Cells(li, coretrait).Value = ""
End If
Next li
Columns(cocode).Delete
End With
End Sub
Public Sub Tri()
' tu mets ton code
'
' puis tu fais un appel à la procedure OK
Call OK
End Sub
Cdlmnt
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
6 avril 2016 à 16:52
6 avril 2016 à 16:52
ouf ! tu m'as perdu ben vite
mais effectivement, j'aurais dû te mettre en couleur les colonnes qui doivent rester après mon premier tri pour t'aider.
Ce sont les colonnes E-I-L-M-N
Mais ce que tu me demandes de mettre dans mon module 1, c'est quelque chose que je ne connais pas du tout. Pour les codes, au moins j'avais compris le truc des colonnes. Mais l'appel à la procédure, sais pas c'est quoi.
comme le premier triage de colonne est important avant de procéder à ta section de macro, voici ma macro suivi de la tienne. Mais quand je l'exécute, ça s'arrête à ma ligne qui explique : séparer les ....
et ça demande un End Sub. Va voir dans le fichier que j'avais mis dans mon post #4, j'ai mis une macro nommé TRI.
Sub tri()
'
' tri Macro
'
'
Columns("A:D").Select
Range("D1").Activate
Selection.Delete Shift:=xlToLeft
Columns("B:D").Select
Selection.Delete Shift:=xlToLeft
Columns("C:D").Select
Selection.Delete Shift:=xlToLeft
Columns("F:I").Select
Selection.Delete Shift:=xlToLeft
Columns("C:C").EntireColumn.AutoFit
Columns("D:D").EntireColumn.AutoFit
Columns("E:E").Select
Selection.Style = "Comma"
Selection.ColumnWidth = 14.44
Range("F1").Select
'séparer les dépôts et les retraits
Public Sub OK()
Dim li As Long, co As Long, lifin As Long
With ActiveSheet
lifin = .Cells(Rows.Count, 1).End(xlUp).Row
For li = lideb To lifin
If .Cells(li, 2).Value = 1 Then
.Cells(li, 6).Value = .Cells(li, 5).Value
.Cells(li, 5).Value = ""
End If
Next li
Columns(2).Delete
End With
Call OK
'fin
End Sub
mais effectivement, j'aurais dû te mettre en couleur les colonnes qui doivent rester après mon premier tri pour t'aider.
Ce sont les colonnes E-I-L-M-N
Mais ce que tu me demandes de mettre dans mon module 1, c'est quelque chose que je ne connais pas du tout. Pour les codes, au moins j'avais compris le truc des colonnes. Mais l'appel à la procédure, sais pas c'est quoi.
comme le premier triage de colonne est important avant de procéder à ta section de macro, voici ma macro suivi de la tienne. Mais quand je l'exécute, ça s'arrête à ma ligne qui explique : séparer les ....
et ça demande un End Sub. Va voir dans le fichier que j'avais mis dans mon post #4, j'ai mis une macro nommé TRI.
Sub tri()
'
' tri Macro
'
'
Columns("A:D").Select
Range("D1").Activate
Selection.Delete Shift:=xlToLeft
Columns("B:D").Select
Selection.Delete Shift:=xlToLeft
Columns("C:D").Select
Selection.Delete Shift:=xlToLeft
Columns("F:I").Select
Selection.Delete Shift:=xlToLeft
Columns("C:C").EntireColumn.AutoFit
Columns("D:D").EntireColumn.AutoFit
Columns("E:E").Select
Selection.Style = "Comma"
Selection.ColumnWidth = 14.44
Range("F1").Select
'séparer les dépôts et les retraits
Public Sub OK()
Dim li As Long, co As Long, lifin As Long
With ActiveSheet
lifin = .Cells(Rows.Count, 1).End(xlUp).Row
For li = lideb To lifin
If .Cells(li, 2).Value = 1 Then
.Cells(li, 6).Value = .Cells(li, 5).Value
.Cells(li, 5).Value = ""
End If
Next li
Columns(2).Delete
End With
Call OK
'fin
End Sub
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 429
6 avril 2016 à 17:13
6 avril 2016 à 17:13
J'ai du mal m'expliquer ;-)
L'idée est de séparer les deux procédures (tri et separation Depots.Retraits)pour faciliter la lecture et la maintenance
C'est la dernière procedure (OK) qui se chargera de lancer le tri et la séparation des depots/retraits)
La seule chose que tu as à faire c'est copier tout le code ci-dessous et remplacer les noms des colonnes par ceux de ton fichier (dans les 4 premières lignes ci-dessous)
Cdlmnt
L'idée est de séparer les deux procédures (tri et separation Depots.Retraits)pour faciliter la lecture et la maintenance
C'est la dernière procedure (OK) qui se chargera de lancer le tri et la séparation des depots/retraits)
La seule chose que tu as à faire c'est copier tout le code ci-dessous et remplacer les noms des colonnes par ceux de ton fichier (dans les 4 premières lignes ci-dessous)
Const lideb = 1 ' premiere ligne à traiter
Const cocode = "B" ' colonne code 1 (depot) ou 0 (retrait)
Const codepot = "E" ' colonne retraits où tous les montants sont au départ
Const coretrait = "D" ' colonne depots
' cette procedure se chanrge de Séparer les depots et les retrits
Public Sub SepareRetraitsDepots()
Dim li As Long, co As Long, lifin As Long
With ActiveSheet
lifin = .Cells(Rows.Count, 1).End(xlUp).Row
For li = lideb To lifin
If .Cells(li, cocode).Value = 1 Then
.Cells(li, codepot).Value = .Cells(li, coretrait).Value
.Cells(li, coretrait).Value = ""
End If
Next li
Columns(cocode).Delete
End With
End Sub
' cette procedure se charge (en principe) du ménage (je ne vois pas de tri)
Public Sub Tri()
Columns("A:D").Select
Range("D1").Activate
Selection.Delete Shift:=xlToLeft
Columns("B:D").Select
Selection.Delete Shift:=xlToLeft
Columns("C:D").Select
Selection.Delete Shift:=xlToLeft
Columns("F:I").Select
Selection.Delete Shift:=xlToLeft
Columns("C:C").EntireColumn.AutoFit
Columns("D:D").EntireColumn.AutoFit
Columns("E:E").Select
Selection.Style = "Comma"
Selection.ColumnWidth = 14.44
Range("F1").Select
End Sub
' cette procedure lance le tri et la séparation des depots/Retraits
Public sub OK()
Call Tri
Call SepareRetraitsDepots
End Sub
Cdlmnt
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
6 avril 2016 à 17:23
6 avril 2016 à 17:23
ah ok. Moi, je voulais que le tout soit dans une seule macro et je trouvais plus facile de lancer ta procédure après avoir épuré les colonnes. Je n'ai pas encore écrit les étapes du triage.
J'exporte à chaque mois plusieurs relevés bancaires de toutes les institutions bancaires. J'ai donc une macro de monté pour chacune. Et celle-ci, c'est une nouvelle. Je débute toujours par l'épuration des colonnes, ensuite, je trie: je mets tous les dépôts en haut et tous les retraits en bas, ensuite je mets en ordre alpha puis par date, et je fais des sous-totaux, je renomme des termes, etc...
je vais essayer de mettre ta procédure en premier. je te reviens.
merci
J'exporte à chaque mois plusieurs relevés bancaires de toutes les institutions bancaires. J'ai donc une macro de monté pour chacune. Et celle-ci, c'est une nouvelle. Je débute toujours par l'épuration des colonnes, ensuite, je trie: je mets tous les dépôts en haut et tous les retraits en bas, ensuite je mets en ordre alpha puis par date, et je fais des sous-totaux, je renomme des termes, etc...
je vais essayer de mettre ta procédure en premier. je te reviens.
merci
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
6 avril 2016 à 17:50
6 avril 2016 à 17:50
Je n'y arrive pas. Je ne suis pas très calée dans les macros.
Faut vraiment épurer pour qu'il reste juste 5 colonnes et après, faut transférer les dépôts dans une nouvelle colonne.
Si je fais ton étape en premier, je pense que ça va transférer les dépôts dans une colonne où il y a des info déjà.
je te retourne mon fichier, avec juste ma macro dedans (nommé TRI). Exécute ma macro et vois comment tu peux insérer la prochaine étape dans la macro, soit de transférer les dépôts dans une nouvelle colonne. Et c'est seulement ensuite que je pourrai continuer la macro pour l'étape du triage.
merci pour ton aide.
https://www.cjoint.com/c/FDgpXvheENV
Faut vraiment épurer pour qu'il reste juste 5 colonnes et après, faut transférer les dépôts dans une nouvelle colonne.
Si je fais ton étape en premier, je pense que ça va transférer les dépôts dans une colonne où il y a des info déjà.
je te retourne mon fichier, avec juste ma macro dedans (nommé TRI). Exécute ma macro et vois comment tu peux insérer la prochaine étape dans la macro, soit de transférer les dépôts dans une nouvelle colonne. Et c'est seulement ensuite que je pourrai continuer la macro pour l'étape du triage.
merci pour ton aide.
https://www.cjoint.com/c/FDgpXvheENV
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 429
6 avril 2016 à 19:06
6 avril 2016 à 19:06
Si j'ai compris
Etape 1. Ctrl+t pour lancer le "tri"
Etape 2. Ctrl+s pour lancer la séparation Depots.Retraits
http://www.cjoint.com/c/FDgreAl7rIq
Cdlmnt
Etape 1. Ctrl+t pour lancer le "tri"
Etape 2. Ctrl+s pour lancer la séparation Depots.Retraits
http://www.cjoint.com/c/FDgreAl7rIq
Cdlmnt
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
6 avril 2016 à 19:16
6 avril 2016 à 19:16
exactement, mais il faut que ça se fasse dans une seule macro. J'ai attribué des boutons macro dans ma barre d'outil d'accès rapide de mon excel pour chaque institution bancaire. Il me reste celle là à faire. Faut que je puisse importer un relevé bancaire et juste cliquer sur un bouton pour que tout se fasse en une shot.
Alors comment mettre l'étape 1 et 2 bout à bout ?
Alors comment mettre l'étape 1 et 2 bout à bout ?
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 429
Modifié par ccm81 le 6/04/2016 à 20:09
Modifié par ccm81 le 6/04/2016 à 20:09
J'ai dissocié les deux procédures pour que tu puisses tester.
Si tout est OK, comme je te l'ai dit au post #7, la procédure OK lance les deux procédures tri et SepareRetritsDepots
Donc, tu ajoutes les lignes ci dessous et ton bouton lance la procédure OK
RQ. Tu peux aussi, pour éviter de placer un bouton, lancer la procédure OK en lui affectant un raccourci clavier
Cdlmnt
Si tout est OK, comme je te l'ai dit au post #7, la procédure OK lance les deux procédures tri et SepareRetritsDepots
Donc, tu ajoutes les lignes ci dessous et ton bouton lance la procédure OK
' cette procédure lance le tri puis la séparation des Depots/Retraits
Public sub OK()
Call Tri
Call SepareRetraitsDepots
End Sub
RQ. Tu peux aussi, pour éviter de placer un bouton, lancer la procédure OK en lui affectant un raccourci clavier
Cdlmnt
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
6 avril 2016 à 20:09
6 avril 2016 à 20:09
oui ça fonctionne en lançant la procédure OK. Si j'ai bien compris, c'est une macro qui faire exécuter 2 macros ?
Maintenant si je veux poursuivre ma macro TRI, je continue juste avant le END SUB ?
Maintenant si je veux poursuivre ma macro TRI, je continue juste avant le END SUB ?
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 429
6 avril 2016 à 20:16
6 avril 2016 à 20:16
Pour faire plus joli/efficace, tu crées une nouvelle procedure qui fait le nouveau boulot après l'exécution de tri et Separe
Sub Machin()
...
End Sub
Tu la testes sérieusement.
Quand elle est OK, tu ajoutes l'appel à cette procédure dans la procédure OK
qui deviendra
Public sub OK()
Call Tri
Call SepareRetraitsDepots
Call Machin
End Sub
Et si tu dois en avoir d'autres, tu vois ce qui te reste à faire. C'est le principe de la séparation des tâches (diviser pour régner ....)
Bon courage
Sub Machin()
...
End Sub
Tu la testes sérieusement.
Quand elle est OK, tu ajoutes l'appel à cette procédure dans la procédure OK
qui deviendra
Public sub OK()
Call Tri
Call SepareRetraitsDepots
Call Machin
End Sub
Et si tu dois en avoir d'autres, tu vois ce qui te reste à faire. C'est le principe de la séparation des tâches (diviser pour régner ....)
Bon courage
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
6 avril 2016 à 20:19
6 avril 2016 à 20:19
wow ! je ne connaissais pas ça. J'en prends bonne note et un gros merci.
bonne journée.
bonne journée.
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 429
6 avril 2016 à 20:25
6 avril 2016 à 20:25
De rien
Mais par ici, c'est plutôt bonne soirée ;-)
Cordialement et ..... bon après midi à toi
Mais par ici, c'est plutôt bonne soirée ;-)
Cordialement et ..... bon après midi à toi