[VBA] + Excel + if

Résolu
jcdepot Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
jcdepot Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je voudrais savoir comment faire pour que la colonne B affiche -20 si et seulement si la colonne A est égale à "Salut". La colonne B n'affiche rien si la colonne A ne répond pas à ce critère. Je sais que je pourrais faire cela en excel mais je ne veux pas que les usagers aient accès à la formule.

Je voulais également savoir où placer ce code pour qu'il ne s'applique qu'à la feuille1 d'excel.

je vous remercie de votre aide!
A voir également:

11 réponses

qmike Messages postés 1509 Date d'inscription   Statut Membre Dernière intervention   594
 
Bonjour
essais ceci
If [(A1)] = "Salut" Then [B1] = [B1] - 20
0
jb355
 
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Worksheets(1).Cells(1, 1) = "salut" Then _
Worksheets(1).Cells(1, 2) = "-20" Else Worksheets(1).Cells(1, 2) = ""
End Sub

Salut
colle la procédure dans le module de la " feuille1 " et test le ..

Bye
0
jcdepot Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Je le colle dans la feuil1 mais ça ne semble pas fonctionner... Je fais surement quelque chose de travers.

Une autre question: Comment je fais pour la formule s'applique à toute la colonne et non seulement à la cellule A1 ?

Merci pour ton aide...
0
jcdepot Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Où est-ce que je dois écrire cette formule ?

Dans VBA sous la feuil1 ?

Est-ce que ça va s'appliquer à toute la colonne ou seulement à la cellule A1 ?

Merci pour ton aide !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jb355
 
salut

cette procédure ne fonctionnera que pour la cellule ( A1 )

sinon tu la colle dans ( VBE ) et dans le module de la feuille 1

bye
0
jb355
 
Re

colle cette formule dans un module de ( VBE ) et clique ensuite sur ( Executer une macro ) cette fois ci 6000 lignes seront traitées

Public Sub Salut()
For i = 1 To 6000
If Worksheets(1).Cells(i, 1) = "salut" Then _
Worksheets(1).Cells(i, 2) = "-20" Else Worksheets(1).Cells(i, 2) = ""
Next i
End Sub


bye
0
jcdepot Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Hourra, ça fonctionne !!!

Maintenant que puis-je faire pour que ça se fasse automatiquement (sans avoir à exécuter la macro).

Merci !
0
jb355
 
Salut

Private Sub Salut()
For i = 1 To 600
If Worksheets(1).Cells(i, 1) = "salut" Then _
Worksheets(1).Cells(i, 2) = "-20" Else Worksheets(1).Cells(i, 2) = ""
Next i
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Call Salut
End Sub

range toute cette procédure dans la meme feuille mais j'ai déduit la boucle a 600 car a chaque mouvement sur la feuille
la procédure se met en route
je ne trouve pas cela terrible qu'elle se mette en route a chaque fois
j'aimerai que tu m'en dise un peu plus sur ce que tu veux exactement car il y a d'autres solutions
avec un bouton sur la feuille ( la procédure es invisible ) et de plus tu protege avec un code le ( VBAProject )

voila a ++
0
jcdepot Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
En fait je veux que le -20 apparaisse automatiquement lorsque j'écris Salut dans la colonne A.

Comme j'ai d'autres information à mettre dans ma feuille excel, peut-être que je serais mieux de faire un formulaire. Comme autre information j'ai le # de projet (unique), le nom du client et le nom de la personne ressource.

Je pourrais peut-être mettre le if en appuyant sur le 'ok' du formulaire.

Qu'est-ce que vous en pensez ?
0
Utilisateur anonyme
 
Bonjour,

Suggestion :

Transformer votre routine en fonction comme suit :

Function Salut(ByVal Cible As Range) As String
    Application.Volatile
    If (LCase(Cible.Offset(0, 0).Value) = "salut") Then
        Salut = "-20"
    Else
        Salut = ""
    End If
End Function
'

Dans la cellule B1 :
Inséré formule / Formules personnalisée / Salut
[ =Salut(A1) ]

En modifiant la cellule A1, la cellule B1 réagit immédiatement.

Lupin
0
jcdepot Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
C'est bien mais l'usager va avoir accès à la formule et c'est ce que je veux éviter.
0