XL 2016 Ecriture dans une cellule sous conditions

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 !

Ayari69700

XLDnaute Nouveau
Bonjour,

J'essai désespérément de faire en vba :

si j'ai dans ma colonne A le texte "coul" alors j'écris "couloir" dans la colonne C
si j'ai dans ma colonne A le texte "bur" alors j'écris "bureaux" dans la colonne C
si j'ai dans ma colonne A le texte "LT" alors j'écris "locaux" dans la colonne C

Merci beaucoup par avance pour votre aide.

Dsl si ça peut paraître bateau pour certains 🙂
 

Pièces jointes

Re,

Si,si ...cela fonctionne sinon pourquoi diable aurais-je posté cette formule ? 🙄
Il se passe quoi en C1, si en A1 tu saisis coul?


"Avant de penser VBA, penser fonctions natives d'Excel" est le premier réflexe des adeptes (sortis du noviciat) d'Excel. 😉

Heu à vrai dire j'ai besoin de conserver le contenu des cellules en colonne A. Grossomodo j'ai besoin de chercher dans la cellule si il y "coul" parmis d'autres caractères.

Merci
 
Re

???
Le contenu en colonne A est conservé puisque la formule est à mettre en colonne C
(comme clairement indiqué dans mon message)

Donc oui, la formule fonctionne
La preuve, elle fonctionne aussi en VBA ... 🙄
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
s_trings = Array("couleurs", "bureaux", "locaux")
vStr = Array("coul", "bur", "lt")
With Application
If Target.Column = 1 Then
Target(1, 3) = .Index(s_trings, .Match(Target, vStr, 0))
End If
End With
End Sub
NB: Code à mettre à l'emplacement idoine dans le projet VBA.
 
Re

A mettre dans le code de la feuille (qui est donc l'endroit idoine)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&, vStr, s_trings
vStr = Array("coul", "bur", "lt")
s_trings = Array("couleurs", "bureaux", "locaux")
If Target.Column = 1 Then
For i = 0 To 2
Select Case InStr(Target, vStr(i))
Case Is > 1
Target(1, 3) = s_trings(i)
Case Else
'
End Select
Next
End If
End Sub
NB: Il faut donc que le code VBA ne soit pas copié dans un module standard.
 
C'est ce que j'essayais d'expliquer plus haut. Les cellules dans la colonne A ne doivent pas bouger les caractères "bur" "coul" sont intégrées a d'autre caractère.

Pour résumer en colonne A je recois des données d'un autre tableau. Il n' y aura jamais "bur" ou "coul" seul.
1572088631608.png
 
Re

Et si le choix se porte sur un bouton, c'est cette version de la macro qu'il faut utiliser.
(Et dans ce cas, le code est à mettre dans un Module Standard, comme ceux qui ont comme nom Module1)
VB:
Sub Macro_Pour_Bouton()
Dim c As Range, s_trings, vStr
s_trings = Array("couleurs", "bureaux", "locaux")
vStr = Array("coul", "bur", "lt")
Application.ScreenUpdating = False
For Each c In Range("A1:A100") 'adapter ici la plage de cellules.
If Len(c) Then
  For i = 0 To 2
  Select Case InStr(c, vStr(i))
  Case Is > 1
  Cells(c.Row, 3) = s_trings(i)
  Case Else
  '
  End Select
  Next
End If
Next
End Sub
NB: Et dans ce cas, bien veiller à supprimer le code VBA présent dans le code de la feuille.
 
- 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

  • Question Question
Microsoft 365 MFC dans tableau
Réponses
2
Affichages
224
Réponses
4
Affichages
163
Retour