évènements dans une feuille de calcul Excel

Résolu
fikriiii Messages postés 27 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 11 mai 2007 - 20 avril 2007 à 11:06
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 - 20 avril 2007 à 11:38
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

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
20 avril 2007 à 11:14
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
3
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
20 avril 2007 à 11:15
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.
3
fikriiii Messages postés 27 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 11 mai 2007
20 avril 2007 à 11:28
Merci Messieurs!
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
20 avril 2007 à 11:32
Re,
Merci: Est ce que cela veut dire que cela fonctionne?

@+: Ju£i?n
Pensez: Réponse acceptée
0

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

Posez votre question
fikriiii Messages postés 27 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 11 mai 2007
20 avril 2007 à 11:35
Oui, il fallait écrire "....Target.Row..."
Merci aussi pour le conseil de Nicko.
@+
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
20 avril 2007 à 11:38
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.


 
0
Rejoignez-nous