[VBA] + Excel + if

Résolu/Fermé
jcdepot Messages postés 13 Date d'inscription mercredi 22 août 2007 Statut Membre Dernière intervention 24 avril 2020 - 22 août 2007 à 03:50
jcdepot Messages postés 13 Date d'inscription mercredi 22 août 2007 Statut Membre Dernière intervention 24 avril 2020 - 30 août 2007 à 19:09
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 1506 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 18 juin 2012 594
22 août 2007 à 08:38
Bonjour
essais ceci
If [(A1)] = "Salut" Then [B1] = [B1] - 20
0
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 mercredi 22 août 2007 Statut Membre Dernière intervention 24 avril 2020
24 août 2007 à 02:42
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 mercredi 22 août 2007 Statut Membre Dernière intervention 24 avril 2020
24 août 2007 à 02:44
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
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
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 mercredi 22 août 2007 Statut Membre Dernière intervention 24 avril 2020
27 août 2007 à 18:34
Hourra, ça fonctionne !!!

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

Merci !
0
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 mercredi 22 août 2007 Statut Membre Dernière intervention 24 avril 2020
30 août 2007 à 14:27
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
30 août 2007 à 17:13
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 mercredi 22 août 2007 Statut Membre Dernière intervention 24 avril 2020
30 août 2007 à 19:09
C'est bien mais l'usager va avoir accès à la formule et c'est ce que je veux éviter.
0