Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formule trop longue... obligation d'une macro ?

6 réponses
Avatar
Laure
Bonjour à tous,

Voilà mon problème : j'ai une cellule F6 dans laquelle il y a du texte de ce
style "R23/24/25: Toxic by inhalation, in contact with skin and if swallowed.
R40: Limited evidence of a carcinogenic effect.
R48/20/21/22: Harmful: danger of serious damage to health by prolonged
exposure through inhalation, in contact with skin and if swallowed.
R68: Possible risk of irreversible effects.
R51/53: Toxic to aquatic organisms, may cause long-term adverse effects in
the aquatic environment."

J'aurai voulu, dans la cellule E6, effectuer le test suivant :
Si dans F6, il y a "45 OU 46 OU 49 OU 60 OU 61 OU endocrine disrupters"
alors écrire dans E6 "ACMR" (avec un fond rouge et A en taille 10 et CMR en
taille 6)

J'ai bien trouvé la formule qui convient, le soucis est qu'en fait j'ai tout
un tas de conditions et du coup ma formule est trop longue. De plus
concernant la mise en forme du résultat je n'y ai pas accès puisqu'il y a une
formule dans ma cellule, et non du texte…

J'ai donc pensé à une macro mais je sèche un peu et je ne sais pas si c'est
réalisable…

Merci d'avance pour vos suggestions.

Cordialement
Laure

6 réponses

Avatar
Cyr13
re je viens de voir une erreure met le "S" a endocrine disputers.

désolé

bye
Avatar
Laure
merci. Malheureusement, dans F6, il y a beaucoup de texte donc F6 n'est
jamais =à 45 ou à 46 etc.
il faut donc utiliser les ESTNUM, TROUVE ou CHERCHE...

mais merci cela me donne des idées
Laure


bonjour, laure voici une solution a ton probleme !!

colle en E6 cette formule puis choisi le formatconditionnel que tu souhaite
avec Si la valeur de la cellule est: = "AMCR"
=SI(F6E;"AMCR";SI(F6F;"AMCR";SI(F6I;"AMCR";SI(F6`;"AMCR";SI(F6a;"AMCR";SI(F6="endocrine disputer";"AMCR";" "))))))

en esperant que j ai bien compris ton petit probleme !!
cordialement


Avatar
Laure
merci beaucoup... je vais creuser l'idée
Laure


Bonjour,

Il y a une façon assez simple de le faire, mais avec un petit problème :

En E6 taper ACMR (polices 10 et 6) et appliquer une couleur de police
blanche à cette cellule.
Mettre une MFC (mise en forme conditionnelle) sur cette cellule, avec pour
formule :
=ESTNUM(CHERCHE(45;F6)+ESTNUM(CHERCHE(46;F6))+ESTNUM(CHERCHE(...
et ainsi de suite pour toutes les conditions en n'oubliant pas de mettre du
texte entre "".
Sous format, appliquer un motif rouge et une police noire.

Le problème est que la police rouge ne s'applique que sur la 1ère lettre (et
je ne sais pas pourquoi !), les autres s'affichant en blanc, mais très
lisibles.
On peut évidemment laiser tout le texte en blanc.

Â+






Bonjour à tous,

Voilà mon problème : j'ai une cellule F6 dans laquelle il y a du texte de ce
style "R23/24/25: Toxic by inhalation, in contact with skin and if swallowed.
R40: Limited evidence of a carcinogenic effect.
R48/20/21/22: Harmful: danger of serious damage to health by prolonged
exposure through inhalation, in contact with skin and if swallowed.
R68: Possible risk of irreversible effects.
R51/53: Toxic to aquatic organisms, may cause long-term adverse effects in
the aquatic environment."

J'aurai voulu, dans la cellule E6, effectuer le test suivant :
Si dans F6, il y a "45 OU 46 OU 49 OU 60 OU 61 OU endocrine disrupters"
alors écrire dans E6 "ACMR" (avec un fond rouge et A en taille 10 et CMR en
taille 6)

J'ai bien trouvé la formule qui convient, le soucis est qu'en fait j'ai tout
un tas de conditions et du coup ma formule est trop longue. De plus
concernant la mise en forme du résultat je n'y ai pas accès puisqu'il y a une
formule dans ma cellule, et non du texte…

J'ai donc pensé à une macro mais je sèche un peu et je ne sais pas si c'est
réalisable…

Merci d'avance pour vos suggestions.

Cordialement
Laure





Avatar
dre
Bonjour,

Il y a une façon assez simple de le faire, mais avec un petit problème :

En E6 taper ACMR (polices 10 et 6) et appliquer une couleur de police
blanche à cette cellule.
Mettre une MFC (mise en forme conditionnelle) sur cette cellule, avec pour
formule :
=ESTNUM(CHERCHE(45;F6)+ESTNUM(CHERCHE(46;F6))+ESTNUM(CHERCHE(...
et ainsi de suite pour toutes les conditions en n'oubliant pas de mettre du
texte entre "".
Sous format, appliquer un motif rouge et une police noire.

Le problème est que la police rouge ne s'applique que sur la 1ère lettre (et
je ne sais pas pourquoi !), les autres s'affichant en blanc, mais très
lisibles.
On peut évidemment laiser tout le texte en blanc.

Â+






Bonjour à tous,

Voilà mon problème : j'ai une cellule F6 dans laquelle il y a du texte de ce
style "R23/24/25: Toxic by inhalation, in contact with skin and if swallowed.
R40: Limited evidence of a carcinogenic effect.
R48/20/21/22: Harmful: danger of serious damage to health by prolonged
exposure through inhalation, in contact with skin and if swallowed.
R68: Possible risk of irreversible effects.
R51/53: Toxic to aquatic organisms, may cause long-term adverse effects in
the aquatic environment."

J'aurai voulu, dans la cellule E6, effectuer le test suivant :
Si dans F6, il y a "45 OU 46 OU 49 OU 60 OU 61 OU endocrine disrupters"
alors écrire dans E6 "ACMR" (avec un fond rouge et A en taille 10 et CMR en
taille 6)

J'ai bien trouvé la formule qui convient, le soucis est qu'en fait j'ai tout
un tas de conditions et du coup ma formule est trop longue. De plus
concernant la mise en forme du résultat je n'y ai pas accès puisqu'il y a une
formule dans ma cellule, et non du texte…

J'ai donc pensé à une macro mais je sèche un peu et je ne sais pas si c'est
réalisable…

Merci d'avance pour vos suggestions.

Cordialement
Laure



Avatar
cousinhub
Bonsoir,
une petite macro pour résoudre ton problème
Tout d'abord, elle efface les données contenues dans la colonne "E"
(De E6 à la fin de ton tableau)
Ensuite, recherche dans toutes les cellules non-vides de la colonne "F"
Format souhaité si valeur trouvée

Sub cherche()
Dim val
Sheets("feuil1").Activate
With Range("F6:F" & [f65000].End(xlUp).Row).Offset(0, -1)
.ClearContents
.Interior.ColorIndex = xlNone
End With
For Each val In Array("45", "46", "49", "60", "61", "endocrine disrupters")
On Error Resume Next
For Each c In Range("F6:F" & [f65000].End(xlUp).Row)
c.Find(What:=val, LookIn:=xlValues, LookAt:=xlPart).Select
If Err = 0 Then
With ActiveCell.Offset(0, -1)
.FormulaR1C1 = "ACMR"
.Characters(Start:=1, Length:=1).Font.Size = 10
.Characters(Start:=2, Length:=3).Font.Size = 6
.Interior.ColorIndex = 3
End With
End If
Err = 0
Next c
Next val
End Sub

un petit exemple :

http://cjoint.com/?dEtaBeRsMM


Bon courage

Bonjour à tous,

Voilà mon problème : j'ai une cellule F6 dans laquelle il y a du texte de ce
style "R23/24/25: Toxic by inhalation, in contact with skin and if swallowed.
R40: Limited evidence of a carcinogenic effect.
R48/20/21/22: Harmful: danger of serious damage to health by prolonged
exposure through inhalation, in contact with skin and if swallowed.
R68: Possible risk of irreversible effects.
R51/53: Toxic to aquatic organisms, may cause long-term adverse effects in
the aquatic environment."

J'aurai voulu, dans la cellule E6, effectuer le test suivant :
Si dans F6, il y a "45 OU 46 OU 49 OU 60 OU 61 OU endocrine disrupters"
alors écrire dans E6 "ACMR" (avec un fond rouge et A en taille 10 et CMR en
taille 6)

J'ai bien trouvé la formule qui convient, le soucis est qu'en fait j'ai tout
un tas de conditions et du coup ma formule est trop longue. De plus
concernant la mise en forme du résultat je n'y ai pas accès puisqu'il y a une
formule dans ma cellule, et non du texte…

J'ai donc pensé à une macro mais je sèche un peu et je ne sais pas si c'est
réalisable…

Merci d'avance pour vos suggestions.

Cordialement
Laure



Avatar
cousinhub
Bonjour, une méthode bien plus rapide, on ne teste plus les cellules une
par une, mais la recherche s'effectue tant qu'il y a la valeur trouvée :

Sub cherche2()
Dim val
Sheets("feuil1").Activate
Application.ScreenUpdating = False
With Range("F6:F" & [f65000].End(xlUp).Row).Offset(0, -1)
.ClearContents
.Interior.ColorIndex = xlNone
End With
For Each val In Array("45", "46", "49", "60", "61", "endocrine disrupters")
On Error Resume Next
[f:f].Find(What:=val, LookIn:=xlValues, LookAt:=xlPart).Activate
While Err = 0
If Err = 0 Then
With ActiveCell.Offset(0, -1)
.FormulaR1C1 = "ACMR"
.Characters(Start:=1, Length:=1).Font.Size = 10
.Characters(Start:=2, Length:=3).Font.Size = 6
.Interior.ColorIndex = 3
End With
End If
[f:f].FindNext(After:¬tiveCell).Activate
If ActiveCell.Offset(0, -1) = "ACMR" Then GoTo suite
Wend
suite:
Next val
Application.ScreenUpdating = True
End Sub

Bonsoir,
une petite macro pour résoudre ton problème
Tout d'abord, elle efface les données contenues dans la colonne "E"
(De E6 à la fin de ton tableau)
Ensuite, recherche dans toutes les cellules non-vides de la colonne "F"
Format souhaité si valeur trouvée

Sub cherche()
Dim val
Sheets("feuil1").Activate
With Range("F6:F" & [f65000].End(xlUp).Row).Offset(0, -1)
.ClearContents
.Interior.ColorIndex = xlNone
End With
For Each val In Array("45", "46", "49", "60", "61", "endocrine disrupters")
On Error Resume Next
For Each c In Range("F6:F" & [f65000].End(xlUp).Row)
c.Find(What:=val, LookIn:=xlValues, LookAt:=xlPart).Select
If Err = 0 Then
With ActiveCell.Offset(0, -1)
.FormulaR1C1 = "ACMR"
.Characters(Start:=1, Length:=1).Font.Size = 10
.Characters(Start:=2, Length:=3).Font.Size = 6
.Interior.ColorIndex = 3
End With
End If
Err = 0
Next c
Next val
End Sub

un petit exemple :

http://cjoint.com/?dEtaBeRsMM


Bon courage

Bonjour à tous,

Voilà mon problème : j'ai une cellule F6 dans laquelle il y a du texte
de ce style "R23/24/25: Toxic by inhalation, in contact with skin and
if swallowed.
R40: Limited evidence of a carcinogenic effect.
R48/20/21/22: Harmful: danger of serious damage to health by prolonged
exposure through inhalation, in contact with skin and if swallowed.
R68: Possible risk of irreversible effects.
R51/53: Toxic to aquatic organisms, may cause long-term adverse
effects in the aquatic environment."

J'aurai voulu, dans la cellule E6, effectuer le test suivant :
Si dans F6, il y a "45 OU 46 OU 49 OU 60 OU 61 OU endocrine
disrupters" alors écrire dans E6 "ACMR" (avec un fond rouge et A en
taille 10 et CMR en taille 6)

J'ai bien trouvé la formule qui convient, le soucis est qu'en fait
j'ai tout un tas de conditions et du coup ma formule est trop longue.
De plus concernant la mise en forme du résultat je n'y ai pas accès
puisqu'il y a une formule dans ma cellule, et non du texte…

J'ai donc pensé à une macro mais je sèche un peu et je ne sais pas si
c'est réalisable…

Merci d'avance pour vos suggestions.

Cordialement
Laure