Masquer zone de texte selon critère

Salut le forum,

pourriez-vous svp m'aider sur cette macro

je veux que la zone texte sera afficher seulement si le texte de D26,E26,F26,G26 = "KO" (Feuille 1)

sinon la zone texte est masquer ci après mon code

Sub valid_zonetxtflse()
Dim rw As Worksheet

Set rw = Feuil1

    If rw.Range("D26,E26,F26,G26") = "OK" Or rw.Range("D26,E26,F26,G26") = "" Then
    rw.Shapes("Valid_plages").Visible = msoFalse
    Else
    rw.Shapes("Valid_plages").Visible = msoTrue
    End If

End Sub

merci.

Bonsoir

Un exemple de ton fichier serait souhaitable

Crdlt

Bonsoir Joco7915,

mon fichier ci-joint, merci

pour information sur les cellules y a que deux choix OK ou KO

11exemple-to-do.xlsm (60.43 Ko)

Bonjour Niba, Joco7915,

Voir la macro modifiée ci-dessous. Avec un commentaire.

Sub valid_zonetxtflse()
Dim rw As Worksheet
'Si une cellule présente le terme KO la forme Valid_Plages ne sera pas visible
Set rw = Feuil1

    If WorksheetFunction.Concat(rw.Range("D26:G26")) Like "OK*" Or WorksheetFunction.Concat(rw.Range("D26:G26")) Like "" Then
    rw.Shapes("Valid_plages").Visible = msoFalse
    Else
    rw.Shapes("Valid_plages").Visible = msoTrue
    End If

End Sub

Après, il faut mieux donner plus d'explications sur ton besoin.

Est ce que toutes les cellules doivent contenir "KO" ou rien qu'une seule empêche la fome Valid_plages d'être apparente?

Bonjour X Cellus, Joco7915, le forum,

oui mon besoin c'est que si une seule cellule ou plus parmi "D26:G26" est KO alors le bouton s'affiche

j'ai test votre code mais j'ai une erreur d'exécution ci-dessous

image image

A nouveau,

Sous Excel 2016 d'après ton profil, ce serait Concatener plus que Concat.

Donc essaie avec

If WorksheetFunction.Concatener(rw.Range("D26:G26")) Like "OK*" Or WorksheetFunction.Concatener(rw.Range("D26:G26")) Like "" Then

Ça n'a pas marché avec "Concatener" aussi

je confirme que j'ai Excel 2016

Suite,

Tu peux séparer par un ou deux espaces avant (rw.Range(

puis effacer .concatener dans ton code

Remet ensuite le point après WorksheetFunction puis Conca et vois ce que l'éditeur te propose comme choix.

Sinon tu peux utiliser l'opérateur de concaténation &

Faire alors

If rw.Range("D26" & "E26" & "F26" & "G26") Like "OK*" Or 
'Modifier pareillement pour la seconde partie

Suite,

Tu peux séparer par un ou deux espaces avant (rw.Range(

puis effacer .concatener dans ton code

Remet ensuite le point après WorksheetFunction puis Conca et vois ce que l'éditeur te propose comme choix.

je n'ai pas concatener parmi les choix proposés, c'est bizarre !

on peux faire la macro avec la fonction recherche la valeur KO dans les cellules D26 au G26 si vrai alors ".Shapes("Valid_plages").Visible = msoTrue"

merci

J'ai trouvé une solution qui me parait fonctionne bien, je le partage

Sub valid_zonetxtflse()

Dim i, rw As Worksheet

Set rw = Feuil1

    rw.Shapes("Valid_plages").Visible = msoFalse
    For i = 1 To 5
    If LCase(Cells(26, i + 3)) = "ko" Then rw.Shapes("Valid_plages").Visible = msoTrue
Next

End Sub

Merci @X Cellus de me donner votre avis

A nouveau,

Je ne t'ai pas proposé la boucle, bien qu'ici elle puisse s'appliquer car les cellules se suivent, afin de te laisser d'abord une solution plus passe-partout.

Donc quelque soit les cellules cibles et notamment les cellules discontinues. Ma solution de 12h56 par l'opérateur de concaténation & le permet.

Au moins tu auras les 2 cas de figure. Il existe aussi une autre piste, c'est de passer par la propriété formulaR1C1 de l'objet Range pour récupérer la formule Concatener du menu des formules texte d'Excel. Mais là aussi il est préférable que les cellules soient continues.

De toute manière un code personnel est une bonne solution. Donc bravo et bonne continuation

Merci X Cellus

Rechercher des sujets similaires à "masquer zone texte critere"