[VBA] + Excel + if

Résolu
jcdepot Messages postés 13 Statut Membre -  
jcdepot Messages postés 13 Statut Membre -
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. qmike Messages postés 1599 Date d'inscription   Statut Membre Dernière intervention   594
     
    Bonjour
    essais ceci
    If [(A1)] = "Salut" Then [B1] = [B1] - 20
    0
  2. 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
  3. jcdepot Messages postés 13 Statut Membre
     
    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
  4. jcdepot Messages postés 13 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. 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
  8. jcdepot Messages postés 13 Statut Membre
     
    Hourra, ça fonctionne !!!

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

    Merci !
    0
  9. 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
  10. jcdepot Messages postés 13 Statut Membre
     
    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
  11. 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
  12. jcdepot Messages postés 13 Statut Membre
     
    C'est bien mais l'usager va avoir accès à la formule et c'est ce que je veux éviter.
    0