PB : If Len(ActiveSheet.Shapes("texte1").Value) > 0 Then

guiguisbc

XLDnaute Junior
Bonjour à tous j'ai taper cette formule dans VBA et il me l'accepte pas pk?

Info :
*texte1 est une zone de texte
*Petit 1 est une image

Code:
Sub Ecrire()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
'c'est ici que sa marche pas
    If Len(ActiveSheet.Shapes("texte1").Value) > 0 Then
    ActiveSheet.Shapes("Petit 1").Visible = True
    ElseIf Len(ActiveSheet.Shapes("texte1").Value) = 0 Then
    ActiveSheet.Shapes("Petit 1").Visible = False
    End If
    If ActiveSheet.Shapes("texte1").Visible = False Then
    ActiveSheet.Shapes("texte1").Visible = True
    ElseIf ActiveSheet.Shapes("texte1").Visible = True Then
    ActiveSheet.Shapes("texte1").Visible = False
    End If
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

Merci d'avance !;)
 
G

Guest

Guest
Re : PB : If Len(ActiveSheet.Shapes("texte1").Value) > 0 Then

Bonjour,

C'est une zone de texte ou un contrôle active x TextBox?

si c'est une zone de texte:

Code:
     ActiveSheet.Shapes("Petit 1").Visible = Len(ActiveSheet.Shapes("texte1").TextFrame.Characters.Text) > 0

Ou
Code:
ActiveSheet.Shapes("Petit 1").Visible = ActiveSheet.Shapes("texte1").TextFrame.Characters.Count > 0
Est suffisant. Les autres lignes sont inutiles.

A+
[Edit] Salut Pierrot:D
 
Dernière modification par un modérateur:

guiguisbc

XLDnaute Junior
Re : PB : If Len(ActiveSheet.Shapes("texte1").Value) > 0 Then

Sa marche :) merci à vous deux !

Petit bémol c'est possible de mettre ce code dans une private sub pour que sa s'active sans que je lance la macro (si je dit pas de bêtise c'est sa?)

Si oui comment je l’écrit ma private sub?
 
G

Guest

Guest
Re : PB : If Len(ActiveSheet.Shapes("texte1").Value) > 0 Then

Re,

Je ne vois pas l'intérêt mais

Code:
Private Sub Ecrire()
ActiveSheet.Shapes("Petit 1").Visible = ActiveSheet.Shapes("texte1").TextFrame.Characters.Count > 0
End Sub
A appeler par
Code:
Ecrire
Ou
Code:
Call Ecrire()

A+
 
G

Guest

Guest
Re : PB : If Len(ActiveSheet.Shapes("texte1").Value) > 0 Then

Bonjour,

L'aide excel sur option Explicit
Option Explicit, instruction


Instruction utilisée au niveau module pour imposer la déclaration explicite de toutes les variables de ce module.
Syntaxe
Option Explicit
Remarques
Si elle est utilisée, l'instruction Option Explicit doit apparaître dans un module avant toute procédure.
Si l'instruction Option Explicit apparaît dans un module, vous devez déclarer explicitement toutes les variables à l'aide des instructions Dim, Private, Public, ReDim ou Static. Si vous tentez d'utiliser un nom de variable non déclarée, une erreur se produit à la compilation.
Si vous n'utilisez pas l'instruction Option Explicit, toutes les variables non déclarées sont de type Variant à moins qu'un type par défaut soit précisé à un autre endroit à l'aide d'une instruction Deftype.
Note Utilisez l'instruction Option Explicit pour éviter toute faute de frappe lors de la saisie du nom d'une variable existante ou pour écarter tout risque de confusion dans un code où la portée de la variable n'apparaît pas clairement.

A+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 611
Messages
2 090 226
Membres
104 453
dernier inscrit
benjiii88