Microsoft 365 VBA : Si une cellule contient alors

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Chessnocoma

XLDnaute Junior
Bonjour,

Je bloque sur une macro assez simple elle est censé retourné une valeur dans la colonne J si une cellule est égal à S11.
Sachant que la colonne A résulte d'une formule, cela ne fonctionne pas.
Je ne peux pas utiliser de formule car du type Si(A1="S11"; S11;"") voila pourquoi j'essaie de le faire sous VBA.
Si j'écrit manuellement S11 dans la colonne cela fonctionne.

Mon code actuel est le suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 1 Then

Select Case Target.Value
Case "S11"
Cells(Target.Row, 11) = "S11"

Case Else
Cells(Target.Row, 11) = ""

End Select
End If
End Sub

Je vous joint un fichier, dans l'idéal, si la colonne B contient "S11" alors dans la colonne J je retrouve S11.

Merci de votre aide,

A bientôt,

Jessy
 

Pièces jointes

Solution
Bonsoir le fil

Il fait gris dehors, faut que je m'occupe
Alors voici comment ...je perds mon temps dans VBA
(alors qu'un tableau structuré et les formules idoines pourraient suffire)
• Mais je me demande bien pourquoi le demandeur veut du VBA

VB:
Private Sub Worksheet_Change(ByVal T As Range)
If T.Column <> 2 Then Exit Sub
T(1, 10) = IIf(T = "S11", "S11", Null)
T(1, 0) = IIf(T = "S11", "S11", Null)
End Sub
Bonjour @Chessnocoma, le fil,

tu avais écrit : « dans l'idéal, si la colonne B contient "S11" »

avec le fichier de mon post #11, résultat après modif des cellules :


Image.jpg


il y a bien le texte "S11" en colonnes A et K si le texte de la colonne B contient "S11" ;
on le voit pas sur l'image, mais le résultat sera identique si tu mets seulement "S11"
en B1 et B2 (c'est-à-dire le texte entier et pas seulement une partie du texte).




d'autre part, il y a une contradiction entre le texte de l'énoncé et le code VBA de cet énoncé :

1) « Je bloque sur une macro assez simple, elle est censée retourner une valeur dans la colonne J
si une cellule est égale à S11. »

2) « dans l'idéal, si la colonne B contient "S11" alors dans la colonne J je retrouve S11. »

3) code du Select Case :


Case "S11"
Cells(Target.Row, 11) = "S11"

Case Else
Cells(Target.Row, 11) = ""

* pour les points 1) et 2) : J est la colonne n° 10
* pour 3) : la colonne n° 11 est la colonne K




c'est pour ça que mon code VBA met les résultats en A et K et pas en A et J.
je m'étais dit : « ce sera au demandeur Jessy d'adapter si besoin ». 😜

dans mon code VBA, pour écrire en colonne J au lieu de K :
remplacer les deux .Offset(, 9) par .Offset(, 8)


soan
 
Dernière édition:
Bonjour le fil

Comme la météo s'y prête, je vais ajouter du commentaire pour le code du post#13.
VB:
Private Sub Worksheet_Change(ByVal T As Range)
'si nous ne sommes pas en colonne B, on sort
If T.Column <> 2 Then Exit Sub
'si la cellule active est égale à S11
'alors on inscrit S11 en colonne A et K, sinon rien
T(1, 10) = IIf(T = "S11", "S11", Null)
T(1, 0) = IIf(T = "S11", "S11", Null)
End Sub
Avec ces commentaires, Chessnocoma devrait déduire que pour titiller la colonne J, il fallait écrire
T(1, 9) = IIf(T = "S11", "S11", Null)
PS: Comme je l'avais précisé
Il fait gris dehors, faut que je m'occupe
Alors je m'occupe dans VBE en écrivant mes tites macros, et parfois y'a du décalage dans la colonne 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
166
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
242
Réponses
7
Affichages
116
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
92
Réponses
2
Affichages
69
Retour