XL 2010 Imbriquer des formules SI(NB.SI(... et message d'alerte

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Orson83

XLDnaute Impliqué
Bonsoir à tous,
Je bloque sur des formules que j'aimerai imbriquer.
En effet, si certaines cellules ne sont pas renseignées ou que d'autres ne doivent pas l'être, alors message d'alerte.
Je pense que la formule SI(NB(... serait adaptée, mais comment indiquer tous ces arguments et tout imbriquer ?
Je joins un fichier dans ce post avec un exemple qui fonctionne avec 3 locations (mais il manque des arguments).
Merci pour votre aide.
Tchotchodu31
 

Pièces jointes

Bonsoir tout le monde,

Je suppose que quand on a N locations, ce sont les N premières lignes qui doivent être remplies. Et non N lignes remplies.
Par ex si 3 locations mais lignes 1,2,5 remplies c'est KO. ( donc NB.si posera problème )
En PJ un essai avec une fonction perso :
VB:
Function Warning(chaine)
    Application.Volatile
    N = Val(Left(chaine, InStr(chaine, " ") - 1))
    For L = 7 To 6 + N
        If Cells(L, "E") = "" Then
            Warning = "Lignes vides dans plage désirée"
            Exit Function
        End If
    Next L
    For L = 7 + N To 18
        If Cells(L, "E") <> "" Then
            Warning = "Lignes non vides en dehors de la plage désirée"
            Exit Function
        End If
    Next L
    Warning = "Ok"
End Function
 

Pièces jointes

Bonsoir Eriiiic, djidji59430, sylvanu, le forum,
Merci pour ces 2 propositions intéressantes.
Concernant celle d'eriiiic, le résultat est faux en E20 quand je choisi 1 location et que je saisi d'autres valeurs en dessous.
La proposition de sylvanu ne tient pas compte de la valeur 0 si 2 locations avec 1 et 0 en dessous.
De façon générale, le zéro ne doit pas être considéré comme une valeur juste.
Merci pour votre aide.
Tchotchodu31
 
C'est parfait.
Merci pour tes nombreuses contributions.
Bon week-end.
Bonjour sylvanu, le forum,
Après avoir fait plusieurs tests, je rencontre un problème d'affichage à l'étape 3 de ma page de saisies.
Je pense que l'une des 2 macro que tu m'as proposé pose problème.
Je joins un exemple dans ce post.
A bientôt.
Tchotchodu31
 

Pièces jointes

Bonjour,
Le phénomène se passe sur la ligne :
VB:
If Val(Range("E37")) Then Rows(38).Resize(Val(Range("E37"))).Hidden = False
Ce n'est pas ma macro, mais celle de Job.
(https://www.excel-downloads.com/threads/erreur-masquage-lignes-avec-select.20050831/)
Je ne sais pas quelle action vous voulez faire là.

Si le module ne doit pas être exécuté alors modifiez le pour l'invalider si l'appel vient de E59 :
Code:
'****************************************
'ADAPTE L'AFFICHAGE AU NOMBRE DE LOCATION
'****************************************
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$59" Then Exit Sub
Application.ScreenUpdating = False
Rows("38:49").Hidden = True 'masque tout
If Val(Range("E37")) Then Rows(38).Resize(Val(Range("E37"))).Hidden = False
End Sub

Si vous voulez que l'action Masque ne se produise que par modification de la cellule E37 alors il vous faut faire :
VB:
'****************************************
'ADAPTE L'AFFICHAGE AU NOMBRE DE LOCATION
'****************************************
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("E37")) Is Nothing Then
        Application.ScreenUpdating = False
        Rows("38:49").Hidden = True 'masque tout
        If Val(Range("E37")) Then Rows(38).Resize(Val(Range("E37"))).Hidden = False
    End If
End Sub

Mais ma macro que vous utilisez est la fonction Warning et ne touche en aucun cas aux lignes. Elle en serait bien incapable, elle n'est pas faite pour ça.
Si problème, remettez le message sur le fil 20050831 d'où vient cette macro, sinon on va tout mélanger. Le futur lecteur de ce fil ne comprendra rien.
 
Dernière édition:
Bonjour,
Le phénomène se passe sur la ligne :
VB:
If Val(Range("E37")) Then Rows(38).Resize(Val(Range("E37"))).Hidden = False
Ce n'est pas ma macro, mais celle de Job.
(https://www.excel-downloads.com/threads/erreur-masquage-lignes-avec-select.20050831/)
Je ne sais pas quelle action vous voulez faire là.

Si le module ne doit pas être exécuté alors modifiez le pour l'invalider si l'appel vient de E59 :
Code:
'****************************************
'ADAPTE L'AFFICHAGE AU NOMBRE DE LOCATION
'****************************************
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$59" Then Exit Sub
Application.ScreenUpdating = False
Rows("38:49").Hidden = True 'masque tout
If Val(Range("E37")) Then Rows(38).Resize(Val(Range("E37"))).Hidden = False
End Sub

Si vous voulez que l'action Masque ne se produise que par modification de la cellule E37 alors il vous faut faire :
VB:
'****************************************
'ADAPTE L'AFFICHAGE AU NOMBRE DE LOCATION
'****************************************
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("E37")) Is Nothing Then
        Application.ScreenUpdating = False
        Rows("38:49").Hidden = True 'masque tout
        If Val(Range("E37")) Then Rows(38).Resize(Val(Range("E37"))).Hidden = False
    End If
End Sub

Mais ma macro que vous utilisez est la fonction Warning et ne touche en aucun cas aux lignes. Elle en serait bien incapable, elle n'est pas faite pour ça.
Si problème, remettez le message sur le fil 20050831 d'où vient cette macro, sinon on va tout mélanger. Le futur lecteur de ce fil ne comprendra rien.
Bonjour sylvanu,
Désolé, je pensai que la macro venait de vous.
Merci pour cette correction qui fonctionne très bien.
J'en ai profité pour apporter un complément d'information dans la solution du post 20050831.
Très bon week-end.
Tchotchodu31
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
773
Retour