[VBA] + Excel + if

Résolu
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!
Configuration: Windows XP
Firefox 2.0.0.6

11 réponses

  1. 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
    1. 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...
      1. 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 !
        1. 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
          1. 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
            1. Hourra, ça fonctionne !!!

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

              Merci !
              1. 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 ++
                1. 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 ?
                  1. 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
                    1. C'est bien mais l'usager va avoir accès à la formule et c'est ce que je veux éviter.