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

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

  • Exemple V1.xlsm
    23.6 KB · Affichages: 10

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • Exemple V1 (1).xlsm
    22.8 KB · Affichages: 2

Orson83

XLDnaute Impliqué
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
 

Orson83

XLDnaute Impliqué
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

  • Exemple-1.xlsm
    33.8 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
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:

Orson83

XLDnaute Impliqué
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
 

Discussions similaires

Statistiques des forums

Discussions
312 191
Messages
2 086 052
Membres
103 109
dernier inscrit
boso_vs_viking