évènements dans une feuille de calcul Excel [Résolu]

Signaler
Messages postés
27
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
11 mai 2007
-
Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
-
Bonjour,

Via l'évènement:  Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sur une feuille Excel (Feuil2), (thanks to Drikce 06) le code  suivant m'a permis d'afficher un MsgBox si l'on tente de remplir une cellule de la colonne F alors que sur la même ligne la cellule de la colonne V est vide.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


   If Target.Column = 6 And IsEmpty(Range("V" & Target.Row)) Then
       Call MsgBox(" Veuillez d'abord saisir le nombre d'heures réalisées", _
       vbCritical Or vbOKOnly, "Attention")
       Call Range("V" & Target.Row).Activate
       Range("F" & Target.Row).ClearContents
   End If
   
End Sub

Après avoir saisi la cellule de la colonne V, comme prescrit ci-dessus, j'aimerais afficher un autre MsgBox si la valeur contenu dans la cellule de la colonne U est x fois supérieure à celle contenue dans la cellule que l'on vient de saisir dans la colonne V.

J'ai fait une tentative...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim u, v As Variant


   If Target.Column = 6 And IsEmpty(Range("V" & Target.Row)) Then
       'Message
       Call MsgBox(" Veuillez d'abord saisir le nombre d'heures réalisées", _
       vbCritical Or vbOKOnly, "Attention")
       'Active la cellule V correspondante
       Call Range("V" & Target.Row).Activate
       Range("F" & Target.Row).ClearContents
   End If
   
    If Target.Column = 6 And Not IsEmpty(Range("V" & Target.Row)) Then
    u = Range("U" & Target).Value
    v = Range("v" & Target).Value
   
         If u < 0.35 * v Then
           Call MsgBox("Ce message ne s'affiche pas...")
        End If
    End If 
End Sub

6 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Salut,
Petite correction peu être
u = Range("U" & Target .Row ).Value
 v = Range("v" & Target.Row).Value

LE message ne s'affichera QUE si:
 la cellule cliquée est dans la colonne 6 soit colonne F ET  U < 0.35 * V
As tu essayer en cloiquant sur F ou autre part ?

Encore une fois il faut mieux expliquer la marche à suivre.
@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
Salut,

Pour savoir si elle est x fois supérieur tu pourrais aussi utiliser le modulo non. La meilleur chose pour eviter de galerer (et trouver par toi meme au lieu de poster) serait d'utiliser le mode debug de VB. Tu mets un point d'arret sur If u < 0.35 * v Then et tu mets ta souris sur u et v pour voir un peu pourquoi.
Messages postés
27
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
11 mai 2007

Merci Messieurs!
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Re,
Merci: Est ce que cela veut dire que cela fonctionne?

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
27
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
11 mai 2007

Oui, il fallait écrire "....Target.Row..."
Merci aussi pour le conseil de Nicko.
@+
Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
1
ta variable u n'est pas déclarée, donc elle est Variant


tu met  u = Range("U" & Target).Value
si la cellule est en mode texte u est un texte.