XL 2019 fonction si "" (vide) + zone texte = masquer

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 !

achraf26

XLDnaute Occasionnel
bonsoir,
j'ai une cellule E2, quand j'écris une valeur, une zone de texte s'affiche.
mais quand j'insère la fonction dessous elle ne prend pas en compte quand la cellule =""
=SIERREUR(SI(H5="";"";SI(J5="";"";INDEX(TD[N°];EQUIV(1;(TD[Contractant]=$H$5)*(TD[Document]=$J$5);0))));"")
 

Pièces jointes

Bonjour.
J'ai vu au passage une Sub Worksheet_Change dans le module de la feuille. Mais elle teste la cellule E2, dont le contenu ne semble pas destinée à être changé, vu que c'est une formule. En testant ses antécédents ça marcherait mieux :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect([B5:C5], Target) Is Nothing Then
      Shapes("ZoneTexte 1").Visible = [E2].Value = ""
      End If
   End Sub
Mais tout cela serait du travail pour un UserForm de mise à jour utilisant le CLsCAs
 
Bonjour achraf26, JBARBE, Bernard, le forum,

Dans le code de la feuille :
VB:
Private Sub Worksheet_Calculate()
Shapes("ZoneTexte 1").Visible = [E2] = "" And [B5] <> "" And [C5] <> ""
End Sub
Dans Module1 :
VB:
Sub APD()
With [Tableau1]
    .Cells(IIf(.Cells(1, 1) = "", 1, .Rows.Count + 1), 1).Resize(, 2) = [B5:C5].Value
End With
End Sub
Et j'ai un peu allégé la formule matricielle en E2 :
Code:
=SIERREUR(INDEX(Tableau1[Année];EQUIV(1;(Tableau1[Nom]=B5)*(Tableau1[Prénom]=C5);0)/(NBVAL(B5:C5)=2));"")
A+
 

Pièces jointes

La formule en E2 ne va pas quand le tableau n'a qu'une seule ligne de données.

Voyez ce fichier (2), il faut ajouter les en-têtes avec [#Tout] dans la formule :
Code:
=SIERREUR(INDEX(Tableau1[[#Tout];[Année]];EQUIV(1;(Tableau1[[#Tout];[Nom]]=B5)*(Tableau1[[#Tout];[Prénom]]=C5);0)/(NBVAL(B5:C5)=2));"")
 

Pièces jointes

🙂 merci job75 pour votre aide,
Jai modifié le code il fonctionne super bien,

Shapes("ZoneTexte 1").Visible = [E2] = "" And [B5] <> "" And [C5] <> "" And [D5] <> ""

j'ai rencontré un autre problème quand j'insère une nouvelle colonne (H) dans le tableau, au moment je rajoute une nouvelle fonction exemple H9, la fonction ne copie pas automatiquement pourtant ca devrait etre Automatique.
bien à vous
 

Pièces jointes

Bonour tous le monde,
j'ai regardé les postes, je vous donne ma conclusion, ci joint fichier reprend le poste 5 et le 6
malgré que la cellule E2 reste vide suite aux faux informations renseignés dans les cellules B5 et C5, le bouton "Ajouter" reste afficher.
le code :

VB:
Private Sub Worksheet_Calculate()
Shapes("ZoneTexte 1").Visible = [E2] = "" And [B5] <> "" And [C5] <> ""
End Sub

Code:
=SIERREUR(INDEX(Tableau1[[#Tout];[Année]];EQUIV(1;(Tableau1[[#Tout];[Nom]]=B5)*(Tableau1[[#Tout];[Prénom]]=C5);0)/(NBVAL(B5:C5)=2));"")

qui précise que même si la cellule E2 =""; la zone texte ne doit pas être afficher.
Bien à vous
 

Pièces jointes

Rebonjour Job75, aucune des deux ne fonctionnait correctement malgré la fonction et le code du poste 5 et 6, rien ne fonctionne à part si j'ai une version d'Excel (Office Pro Plus 2016) qui fait que le code vba beug.
ci joint le fichier : le B5 et C5 vide malgré que la E2 ="", le bouton reste afficher.
 

Pièces jointes

bonjour JOb75, Dranreb,
je vous jure que j'ai encore refais les solutions du poste 5 et 6 ce matin, mais rien fonctionnait.
je vous jure que je dis pas du tout n'importe quoi,
ci joint fichier nomé test1000. vous allez voir que j'ai bien mis la fonction en E2.
VB:
=SIERREUR(INDEX(Tableau1[[#Tout];[Année]];EQUIV(1;(Tableau1[[#Tout];[Nom]]=B5)*(Tableau1[[#Tout];[Prénom]]=C5);0)/(NBVAL(B5:C5)=2));"")

code de la feuille :
Code:
Private Sub Worksheet_Calculate()
Shapes("ZoneTexte 1").Visible = [E2] = "" And [B5] <> "" And [C5] <> ""
End Sub

et bouton vba :
Code:
Sub APD()
With [Tableau1]
    .Cells(IIf(.Cells(1, 1) = "", 1, .Rows.Count + 1), 1).Resize(, 2) = [B5:C5].Value
End With
End Sub

passer une bonne journée
bien à vous
 

Pièces jointes

Le bouton "Ajouter" est masqué puisque "test" et "noi" existent déjà en ligne 12, donc il ne faut pas les ajouter de nouveau.

La formule en H9 se recopie vers le bas chez moi quand on valide H9.

Mais j'écrirais plutôt =ANNEE(AUJOURDHUI())-[@Année]>41
 
- 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
18
Affichages
1 K
Retour