Problème en VBA

Marsu23

XLDnaute Nouveau
Bonjour à tous,

est il possible en VBA effectuer le calcul suivant ?

dans la colonne B si je j'inscris "oui" alors ça m'inscrit "non" dans les colonnes C, D et E.

Voici se que j'ai établi mais il faut réativer la macro à chaque fois.

Function oui()

Dim val As Variant


For Each val In [m3:m200]
If val = "oui" Then val.Offset(0, 1) = "non"
Next

For Each val In [m3:m200]
If val = "oui" Then val.Offset(0, 2) = "non"
Next

For Each val In [m3:m200]
If val = "oui" Then val.Offset(0, 3) = "non"
Next

For Each val In [m3:m200]
If val = "" Then val.Offset(0, 1) = ""
Next

For Each val In [m3:m200]
If val = "" Then val.Offset(0, 2) = ""
Next

For Each val In [m3:m200]
If val = "" Then val.Offset(0, 3) = ""
Next

End Function

Est ce que quelqu'un peut m'éclairer sur le sujet ?
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème en VBA

Bonsoir Marsu, bonsoir le forum,

Malgré la bonne volonté d'un Cher Ami, je peine encore à utiliser les fonctions. Toutefois, cette macro événementielle devrait satisfaire tes besoins :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'si le changement se fait en dehors de la plage B3:B200, sort de la procédure
If Application.Intersect(Target, Range("B3:B200")) Is Nothing Then Exit Sub
'si "oui" (quelle que soit la casse) est inscrit dans la cellule
If UCase(Target.Value) = "OUI" Then
    'les trois cellules adjacentes prennent la valeur "non"
    Range(Target.Offset(0, 1), Target.Offset(0, 3)).Value = "non"
Else 'sinon
    'les 3 cellules adjacentes se vident
    Range(Target.Offset(0, 1), Target.Offset(0, 3)).Value = ""
End If
End Sub
 

Statistiques des forums

Discussions
312 239
Messages
2 086 495
Membres
103 234
dernier inscrit
matteo75654548