Formule VBA avec (si et alors)
Résolu
zizou026
Messages postés
101
Date d'inscription
Statut
Membre
Dernière intervention
-
zizou026 Messages postés 101 Date d'inscription Statut Membre Dernière intervention -
zizou026 Messages postés 101 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche une formule VBA :
Si dans la feuille (onglet 1), on trouve « 9000 » et que dans une phrase on trouve « Train » alors remplacer la phrase par Train.
Par avance, je vous remercie beaucoup de votre aide et bon courage à tous.
Et, je profite de cette demande pour remercier ce forum et toutes les personnes qui m'ont aidées.
Cordialement,
zizou
Je cherche une formule VBA :
Si dans la feuille (onglet 1), on trouve « 9000 » et que dans une phrase on trouve « Train » alors remplacer la phrase par Train.
Par avance, je vous remercie beaucoup de votre aide et bon courage à tous.
Et, je profite de cette demande pour remercier ce forum et toutes les personnes qui m'ont aidées.
Cordialement,
zizou
A voir également:
- Formule VBA avec (si et alors)
- Formule si et - Guide
- Mise en forme conditionnelle excel formule si - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Formule somme excel colonne - Guide
16 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
quand cela devrait-il se passer?
si il y a 9000 n'importe où, il faut remplacer toutes les cellules contenant "Train" par "Train"?
quand cela devrait-il se passer?
si il y a 9000 n'importe où, il faut remplacer toutes les cellules contenant "Train" par "Train"?
Re ye_be,
Mes données 1er critère 9000 sont dans la colonne A, la 2ème critère peut être aléatoire.
J'ai environ une douzaine des 1er critères, je ferai un copier coller du formule et l'adapterai à mon fichier.
Merci pour ton aide.
Zizou
Mes données 1er critère 9000 sont dans la colonne A, la 2ème critère peut être aléatoire.
J'ai environ une douzaine des 1er critères, je ferai un copier coller du formule et l'adapterai à mon fichier.
Merci pour ton aide.
Zizou
- une précision les critères à remplacer peuvent être soient dans la colonne J ou Q.
Il se trouve dans ces colonnes certaine cellule peuvent être sans informations.
Mais la colonne A est obligatoirement remplie.
Il se trouve dans ces colonnes certaine cellule peuvent être sans informations.
Mais la colonne A est obligatoirement remplie.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
peux-tu partage un fichier qui montre clairement ce que doit faire la "formule"?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour yg_be,
Je te joins le fichier https://www.cjoint.com/c/JCynGXyVBXr
Je travaille sur Excel 2010.
Cordialement,
Zizou
Je te joins le fichier https://www.cjoint.com/c/JCynGXyVBXr
Je travaille sur Excel 2010.
Cordialement,
Zizou
1) il me semble qu'il manque quelques mots dans la phrase suivante:
"Si la A affiche 9000, alors remplacer par Train dans la colonne Q et si vide écrire Train."
2) pourquoi veux-tu faire une fonction et pas une macro?
3) je pense que tu peux utiliser une formule standard pour séparer la date et l'heure de la colonne D et que ça s'inscrit dans la colonne W et X:
"Si la A affiche 9000, alors remplacer par Train dans la colonne Q et si vide écrire Train."
2) pourquoi veux-tu faire une fonction et pas une macro?
3) je pense que tu peux utiliser une formule standard pour séparer la date et l'heure de la colonne D et que ça s'inscrit dans la colonne W et X:
=ENT(D4)en W4 et
=D4-W4en X4. adapte ensuite les formats pour l'afficher comme tu le souhaites.
Bonjour yg_be,
je te remercie pour ta réponse.
J'ai fais le macro pour l'arrondissement :
Sub ardt()
'
' ardt Macro
'
'
Sheets("1").Select
Columns("I:I").Select
Selection.Replace What:="*Paris 10e*", Replacement:="75010", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Sheets("Accueil").Select
ActiveWorkbook.Save
End Sub
Je ne vois pas trop comment faire avec la condition (SI/ALORS) remplace.
Aurais-tu l'amabilité de me donner un début, je pourrai essayer de l'appliquer.
pour ce qui concerne la séparation date c'est noté.
Je te remercie et je te souhaite une excellente journée.
Cordialement,
Zizou
je te remercie pour ta réponse.
J'ai fais le macro pour l'arrondissement :
Sub ardt()
'
' ardt Macro
'
'
Sheets("1").Select
Columns("I:I").Select
Selection.Replace What:="*Paris 10e*", Replacement:="75010", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Sheets("Accueil").Select
ActiveWorkbook.Save
End Sub
Je ne vois pas trop comment faire avec la condition (SI/ALORS) remplace.
Aurais-tu l'amabilité de me donner un début, je pourrai essayer de l'appliquer.
pour ce qui concerne la séparation date c'est noté.
Je te remercie et je te souhaite une excellente journée.
Cordialement,
Zizou
le code suivant agit en fonction de la valeur en colonne A, sur chaque ligne.
si la valeur est 9000, il vérifie si la valeur sur la même ligne en colonne J ou Q est vide. si oui, il remplace la valeur vide par "Train".
j'ai déjà préparé la détection de la valeur 7300 en colonne A, il suffit d'ajouter en dessous ce que tu veux faire dans ce cas-là.
je n'ai pas compris la phrase "remplacer par Train dans la colonne Q".
il est recommandé de ne pas utiliser active et select, je suggère ceci pour ton autre macro:
si la valeur est 9000, il vérifie si la valeur sur la même ligne en colonne J ou Q est vide. si oui, il remplace la valeur vide par "Train".
j'ai déjà préparé la détection de la valeur 7300 en colonne A, il suffit d'ajouter en dessous ce que tu veux faire dans ce cas-là.
je n'ai pas compris la phrase "remplacer par Train dans la colonne Q".
Option Explicit Sub repp() Dim code As Range, ligne As Long, feuille As Worksheet Set feuille = Sheets("1") For Each code In feuille.[A:A] ligne = code.Row Select Case code Case 9000: If feuille.Cells(ligne, "J") = "" Then feuille.Cells(ligne, "J") = "Train" End If If feuille.Cells(ligne, "Q") = "" Then feuille.Cells(ligne, "Q") = "Train" End If Case 7300: End Select Next code End Sub
il est recommandé de ne pas utiliser active et select, je suggère ceci pour ton autre macro:
Sub ardt() ' ' ardt Macro ' ' Sheets("1").Columns("I:I").Replace What:="*Paris 10e*", Replacement:="75010", LookAt:= _ xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False ThisWorkbook.Save End Sub
Bonjour ye_be,
Ta formule fonctionne mais bizarrement en partie seulement, c'est à dire sur environ 200 cellules j'obtiens seulement 19 résultats sur la colonne J et 1 sur Q.
Question : concernant la colonne Q, je souhaiterai le mot sois inscrit si le mot concerné est dans la phrase ex : le wagon du train (seul le mot train s'inscrit dans la cellule).
Merci beaucoup ye_be et et souhaite une excellente journée.
cordialement,
Zizou
Ta formule fonctionne mais bizarrement en partie seulement, c'est à dire sur environ 200 cellules j'obtiens seulement 19 résultats sur la colonne J et 1 sur Q.
Question : concernant la colonne Q, je souhaiterai le mot sois inscrit si le mot concerné est dans la phrase ex : le wagon du train (seul le mot train s'inscrit dans la cellule).
Merci beaucoup ye_be et et souhaite une excellente journée.
cordialement,
Zizou
peut-être ceci pour remplacer la cellule par "train" si "train" y est présent:
"formule fonctionne mais bizarrement en partie seulement": à quel endroit vois-tu une anomalie?
Sub repp() Dim code As Range, ligne As Long, feuille As Worksheet Set feuille = Sheets("1") For Each code In feuille.[A:A] ligne = code.Row Select Case code Case 9000: If feuille.Cells(ligne, "J") = "" Then feuille.Cells(ligne, "J") = "Train" End If If feuille.Cells(ligne, "Q") = "" Then feuille.Cells(ligne, "Q") = "Train" End If If InStr(feuille.Cells(ligne, "J"), "train") > 0 Then feuille.Cells(ligne, "J") = "train" End If If InStr(feuille.Cells(ligne, "Q"), "train") > 0 Then feuille.Cells(ligne, "Q") = "train" End If Case 7300: End Select Next code End Sub
"formule fonctionne mais bizarrement en partie seulement": à quel endroit vois-tu une anomalie?
Bonjour yg_be,
je crois avoir trouver le petit bug.
Le mot train : est saisi (train, trains, trin, trins).
est ce possible d"écrire la formule comme suit :
If feuille.Cells(ligne, "Q") = "" Then
feuille.Cells(ligne, "Q") = "Train; Trains, Trin, Trins" ?
Je te remercie beaucoup.
Cordialement,
Zizou
je crois avoir trouver le petit bug.
Le mot train : est saisi (train, trains, trin, trins).
est ce possible d"écrire la formule comme suit :
If feuille.Cells(ligne, "Q") = "" Then
feuille.Cells(ligne, "Q") = "Train; Trains, Trin, Trins" ?
Je te remercie beaucoup.
Cordialement,
Zizou
Excuse moi, j'ai repris ta formule pour que je me retrouve.
le saisi du mot train se fait : train, train(s), trin, trin(s).
Cordialement,
Zizou
le saisi du mot train se fait : train, train(s), trin, trin(s).
Cordialement,
Zizou
Bonjour yg_be,
Oui c'est exactement ça. :) Encore merci de ton aide.
Cordialement,
Zizou
Oui c'est exactement ça. :) Encore merci de ton aide.
Cordialement,
Zizou
alors peut-être ceci:
Option Explicit Const ctrains As String = "train,trains,trin,trins" Sub repp() Dim code As Range, ligne As Long, feuille As Worksheet Set feuille = Sheets("1") For Each code In feuille.[A:A] ligne = code.Row Select Case code Case 9000: If feuille.Cells(ligne, "J") = "" Then feuille.Cells(ligne, "J") = "Train" End If If feuille.Cells(ligne, "Q") = "" Then feuille.Cells(ligne, "Q") = "Train" End If If plus(feuille.Cells(ligne, "J"), ctrains) Then feuille.Cells(ligne, "J") = "train" End If If plus(feuille.Cells(ligne, "Q"), ctrains) Then feuille.Cells(ligne, "Q") = "train" End If Case 7300: End Select Next code End Sub Private Function plus(phrase As String, mots As String) As Boolean Dim mot For Each mot In Split(mots, ",") If InStr(phrase, mot) > 0 Then plus = True Exit Function End If Next mot plus = False End Function
Bonsoir ye_be,
ça fonctionne sur la colonne Q (la colonne J ne réagit pas). Franchement merci beaucoup.
Je fais le nécessaire sur le vrai fichier et je te tiens informé.
Cordialement,
Zizou
ça fonctionne sur la colonne Q (la colonne J ne réagit pas). Franchement merci beaucoup.
Je fais le nécessaire sur le vrai fichier et je te tiens informé.
Cordialement,
Zizou
Bonjour ye_be,
ça fonctionne MERCI BEAUCOUP.
Dans l'exemple d'écriture (train, train(s), trin, trin(s)), j'ai remarqué que l'écriture doit être parfait c'est à dire train(s)/TRAIN(S)/Train(s) ce qui fait déjà 6 distinctions pour le mot train. J'ai essayé d'accumuler les mots mais il bloque à 11 mots.
Question : serait-il possible que la formule prends en compte quelque soit la manière de saisi du mot Train? La base réelle contient déjà 12 mots.
Ou créer un nom Train qui pourrait contenir (train, train(s), trin, trin(s), wagon...) et l'associé dans ta formule.
Cordialement,
Zizou
ça fonctionne MERCI BEAUCOUP.
Dans l'exemple d'écriture (train, train(s), trin, trin(s)), j'ai remarqué que l'écriture doit être parfait c'est à dire train(s)/TRAIN(S)/Train(s) ce qui fait déjà 6 distinctions pour le mot train. J'ai essayé d'accumuler les mots mais il bloque à 11 mots.
Question : serait-il possible que la formule prends en compte quelque soit la manière de saisi du mot Train? La base réelle contient déjà 12 mots.
Ou créer un nom Train qui pourrait contenir (train, train(s), trin, trin(s), wagon...) et l'associé dans ta formule.
Cordialement,
Zizou
C'est au bout de la ligne que ça (bloque), j'ai essayé de faire entrée pour la continuité du saisi des mots, là j'ai eu un bug.
Par avance excuse moi, si je ne suis pas clair.
Par avance excuse moi, si je ne suis pas clair.
Bonjour yg_be,
Même embrumée ta boule de cristal fonctionne merveilleusement bien.
J'intègre ta formule dans la base réelle. Encore merci.
Cas particulier :
Question : serait-il possible d'affecter 2 références pour les même critères?
Exemple : 9000 = train, 9100 = locomotive.
Je souhaite réunir 9000 et 9100 pour dire que c'est train.
Cordialement,
Zizou
Même embrumée ta boule de cristal fonctionne merveilleusement bien.
J'intègre ta formule dans la base réelle. Encore merci.
Cas particulier :
Question : serait-il possible d'affecter 2 références pour les même critères?
Exemple : 9000 = train, 9100 = locomotive.
Je souhaite réunir 9000 et 9100 pour dire que c'est train.
Cordialement,
Zizou
GÉNIAL ça fonctionne super bien.
J'ai plusieurs modules, comment les regrouper par un bouton? Sans abuser de ta gentillesse.
Cordialement,
Zizou
J'ai plusieurs modules, comment les regrouper par un bouton? Sans abuser de ta gentillesse.
Cordialement,
Zizou