tester les valeurs d'une plage en VBA

jopont

XLDnaute Impliqué
Bonjour,

J'aimerais tester si une des valeurs d'une plage nommé ( [nb_jour]) est supérieur strictement à 3.
Qu'est ce que cela donne en VBA ?
Le résultat du test étant un msg box?

merci
 

jeanpierre

Nous a quitté
Repose en paix
Re : tester les valeurs d'une plage en VBA

Re,

Désolé, je ne vois pas le rapport avec ceci :

"En cellule BV4 je récupère via une formule un nombre de jour ( NB SI .....)
Cette formule est recopiée de BV4 à BV65.
Le chiffre n'est pas saisi par l'utilisateur.
Simplement je veux qu'il soit averti.

Si je met vos différents code vba en this workbook ou sur la feuille, je n'ai pas de résultat concluant"

Pas de formule.... BV4 à BV65 vide... ?

Peut-être que je n'ai rien compris ???
 

skoobi

XLDnaute Barbatruc
Re : tester les valeurs d'une plage en VBA

Re,

bonsoir roro69,

pour le fichier de 19h04, ceci fonctionne (sélectionne la plage auparavant):

Code:
Sub test()
For Each Cellule In Selection
  If Cellule.Value > 3 Then MsgBox "La cellule " & Cellule.Address(0, 0) & " est supérieure à 3."
Next
End Sub
 

jopont

XLDnaute Impliqué
Re : tester les valeurs d'une plage en VBA

Bon et bien ça marche dans ton fichier lorsque je change les valeurs de G2 à G8.

Par contre dans mon fichier lorsque que les valeurs de BV4 à BV8 changent rien ne se passe

Tu as ajouté un intersect ?

Si oui comment cumuler des intersect pour une feuille, car j'ai deja un procédure intersect sur la feuille
 
Dernière édition:

skoobi

XLDnaute Barbatruc
Re : tester les valeurs d'une plage en VBA

Re,

roro, tu n'ai pas le seul...
tchin! :D

Plus sérieusement jopont, ok, mais si tu ne peux arriver à nous envoyer un bout de ton fichier, on va tourner en rond logtemps comme ça (plus vite après quelque verre hi hi:p)
 

jeanpierre

Nous a quitté
Repose en paix
Re : tester les valeurs d'une plage en VBA

Re,

Je viens de changer G6, enfin sur ton fichier joint... (situation inédite) (et à part roro69 qui a bien analysé la chose), il ne se passe rien...

Normal si tu ne retranscris pas ce qui t'est donné avant.... Ce n'est donc pas la peine de redéposer un fichier vierge de tous les conseils donnés... cela polue
 

fanfan38

XLDnaute Barbatruc
Re : tester les valeurs d'une plage en VBA

Bonjour
1° Skoobi Comme le dit ton épitaphe on en apprend tous les jours...
Jopont tu dit que c'est en colonne BV et dans ta macro tu met 1 alors que bv c'est la colonne 74. Donc:
If Cells(i, 74).Value > 3 Then

A+ François
 

jopont

XLDnaute Impliqué
Re : tester les valeurs d'une plage en VBA

Bonjour
Je reviens sur mon sujet, désolé mais je débute en VBA.


Dans un module j'ai donc mis le code suivant qui fonctionne lorsque je fais du pas à pas détaillé dans VB éditeur.

Sub Nbjoursup3()
Dim Nblignes As Integer, Nbjoursup3 As Integer
Dim j As Integer, i As Integer
Dim plageNbjours As Range
Set plageNbjours = Range("BV4:BV10")
Nblignes = plageNbjours.Rows.Count
Nbjoursup3 = 0
For i = 1 To Nblignes
If plageNbjours.Cells(i, 1) > 3 Then
Nbjoursup3 = Nbjoursup3 + 1
End If
Next
MsgBox "Attention il y a " & Nbjoursup3 & " cellule avec un nombre de jours de congé naissance > 3"

End Sub

Seulement maintenant j'aimerais faire appel à cette procédure lorsqu'il y a un changement dans la plage BV4:BV10

J'ai essayé le code suivant sur la feuille pour appeler la procédure :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([zones_janv], Target) Is Nothing Then
On Error Resume Next
Target.Interior.ColorIndex = [liste_code].Find(Target, LookAt:=xlWhole).Interior.ColorIndex
End If
Call Nbjoursup3
End Sub

et la ça fonctionne toujours pas et en plus le code qui me permet de récupérer de la couleur ne fonctionne plus.

merci pour votre aide
 

jopont

XLDnaute Impliqué
Re : tester les valeurs d'une plage en VBA

je voudrais quelque chose comme ça :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("C3:BL65"), Target) Is Nothing Then
On Error Resume Next
Target.Interior.ColorIndex = [liste_code].Find(Target, LookAt:=xlWhole).Interior.ColorIndex
If Not Intersect(Target, Range("BV4:BV10")) Is Nothing Then
Call Nbjoursup3
End If
End If
End Sub

La premiere partie du code avec la récupération de couleur fonctionne.
Par contre l'appel de la procédure ne fonctionne pas

merci
 

Discussions similaires

Réponses
12
Affichages
332

Statistiques des forums

Discussions
312 329
Messages
2 087 328
Membres
103 517
dernier inscrit
hbenaoun63