Recherche et remplace avec condition (excel 2010) [Résolu/Fermé]

Signaler
Messages postés
135
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
19 mars 2018
-
Messages postés
135
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
19 mars 2018
-
Bonjour,

J'importe dans excel des relevés bancaires et je suis en train de refaire au complet ma macro pour le triage de toutes les transactions (tous les dépôts en haut, tous les retraits en bas, type de dépôt/retrait regroupés, avec un sous-total, ordre chronologique, etc...)

Je bute sur un petit problème. J'aimerais regrouper ensemble tous les différents types de frais bancaires. Je vous joins un exemple très résumé, avec quelques données seulement. Dans la section du haut, ce sont différents types de retraits. Ceux en jaune sont ceux que je veux regrouper. Le résultat souhaité se retrouve en bas.
A la ligne 9, ce sera très facile. Je n'aurai qu'à faire un recherche/remplace pour éliminer le terme Paiement préaut. pour le remplacer par rien, afin que le reste se retrouve au début de la cellule. Le tri en ordre alphabétique l'inclura automatiquement.
Le problème est à la ligne 10. Ce sont des frais de virement. Ils sont toujours de $25.00. Mais je ne peux pas rechercher "virement" et le remplacer par
"frais virement", car ça remplacerait aussi la ligne 11 qui elle, est un VRAI virement. Alors comment puis dire: si colonne B = virement ET colonne C = $25.00 alors remplace le mot virement par frais virement. Par la suite, le tri fera la job et je pourrai faire mon sous-total.
J'ai toujours des problèmes à composer une fonction. Mais je suis persuadée que c'est faisable.

merci pour votre aide.
bonne journée.
https://www.cjoint.com/c/EFxnjnhpyeV


7 réponses

Messages postés
12450
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
3 août 2020
1 953
Bonjour,

Une possibilité simple :
En colonne E recopier la colonne A et en colonne G recopier la colonne C
En F1 mettre cette formule :
=SIERREUR(SI(ET(TROUVE("Virement";B1);C1=25);"Frais virement";B1);B1)
et l'étirer au bas (double clic sur carré noir en bas à droite de la cellule)

Copier tout ce nouveau tableau et le coller sur une nouvelle feuille par collage spécial, Valeurs uniquement
Ne reste plus qu'à appliquer le tri sur ce tableau

Cdlmnt
Via
Messages postés
135
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
19 mars 2018

Génial, ça fonctionne.
merci beaucoup
bonne journée.
Messages postés
12450
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
3 août 2020
1 953
Ou alors mieux, sans tableau annexe, par une seule formule :
=SOMME.SI(B1:B11;"*Frais*";C1:C11)+SOMME.SI.ENS(C1:C11;B1:B11;"*Virement*";C1:C11;25)

Cdlmnt
Via
j'aime bien aussi la 2e solution, mais je veux pouvoir trier par la suite en ordre alphabétique et que tous les frais se regroupent ensemble. Le pourquoi du virement qui devient frais virement.
La première solution est exactement ce que je cherchais. Merci.
Messages postés
135
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
19 mars 2018

Via55: Il y a un détail auquel je n'avais pas pensé.
Comme le relevé bancaire n'a pas toujours le même nombre de ligne d'un mois à l'autre, ma macro doit tenir compte de ça. Donc, pour les besoins de l'exemple, j'extensionne ta commande jusqu'à la ligne 30.
Dans la feuille A, c'est le modèle de départ. Dans la feuille B, c'est la macro exécutée avant que je la continue. Etant donné que la formule dans la colonne E va jusqu'à la ligne 30, il est normal que ça donne comme résultat des 0. J'ai rajouté dans la macro une recherche pour remplacer ces 0 de cette colonne par rien du tout, mais regarde le résultat étrange. Non seulement les 0 ne sont pas disparus, mais ça rajoute des info dans la ligne 20 et 30 (et à chaque 10e ligne si je continue plus loin).
Et dans la feuille C, en principe, l'étape suivante dans ma macro serait que je copierais la colonne E à la colonne B, valeur seulement, puis j'effacerais la colonne E. Mais je ne suis pas plus avancée, j'ai encore ces 0 et des lignes non désirées. Comment puis-je dire dans ma macro de copier la formule vers le bas, mais jusqu'à ce qu'il n'y ait plus rien dans la colonne B ?

merci

https://www.cjoint.com/c/EFxrKUsjI3V
Messages postés
12450
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
3 août 2020
1 953
Re,

Macro qui copie la formule depuis E1 jusqu'à la dernière ligne remplie de B :
Sub remplacement()

Dim Ligne As Long
Ligne = Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row
    Range("E1").Select
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(IF(AND(FIND(""Virement"",RC[-3]),RC[-2]=25),""Frais virement"",RC[-3]),RC[-3])"
    Selection.AutoFill Destination:=Range("E1:E" & Ligne), Type:=xlFillDefault
End Sub


Cdlmnt
Via
Messages postés
135
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
19 mars 2018

merci beaucoup. ça fonctionne à merveille !