XL 2016 Ecriture dans une cellule sous conditions

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

  • METRES Help.xlsm
    58.1 KB · Affichages: 5

Ayari69700

XLDnaute Nouveau
Re,

Si,si ...cela fonctionne sinon pourquoi diable aurais-je posté cette formule ? :rolleyes:
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
 

Staple1600

XLDnaute Barbatruc
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 ... :rolleyes:
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.
 

Staple1600

XLDnaute Barbatruc
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.
 

Ayari69700

XLDnaute Nouveau
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
 

Staple1600

XLDnaute Barbatruc
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.
 

Discussions similaires

Réponses
8
Affichages
344
Réponses
8
Affichages
263

Statistiques des forums

Discussions
312 036
Messages
2 084 812
Membres
102 676
dernier inscrit
LN6