OVH Cloud OVH Cloud

Effacer les zones de texte

11 réponses
Avatar
François
Re-bonjour,

Denis Michon m'avait donné la proc suivante :

Sub EffacerContenuZoneDeTexte()

With Worksheets("Feuil1")
.Shapes("Zone de texte 1").OLEFormat.Object.Text = ""
End With

End Sub

... qui fonctionne très bien
Comment faire maintenant pour passer en revue tous les zones de texte
d'un classeur sans connaitre leur nom (Zone de texte 1, Zone de texte
957...)

Merci par avance
François

10 réponses

1 2
Avatar
papou
Bonjour François
A défaut de mieux :
Sub RazZonesTexte()
Dim i As Integer
Dim NF As Integer
NF = Sheets.Count
For i = 1 To NF
For Each zntxt In Worksheets(i).Shapes
If zntxt.Type = 17 Then 'ou alors If zntxt.Name Like "Zone de
texte" Then
Worksheets(i).Shapes(zntxt.Name).OLEFormat.Object.Text = ""
End If
Next zntxt
Next i
End Sub

Cordialement
Pascal

"François" a écrit dans le message de
news:
Re-bonjour,

Denis Michon m'avait donné la proc suivante :

Sub EffacerContenuZoneDeTexte()

With Worksheets("Feuil1")
.Shapes("Zone de texte 1").OLEFormat.Object.Text = ""
End With

End Sub

... qui fonctionne très bien
Comment faire maintenant pour passer en revue tous les zones de texte
d'un classeur sans connaitre leur nom (Zone de texte 1, Zone de texte
957...)

Merci par avance
François





Avatar
Michel Gaboly
Bonjour,

Comme cela :

Sub EffaceZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = 17 Then s.OLEFormat.Object.Text = ""
Next s
End Sub

Pour trouver le 17, que je ne connais pas par coeur ;-)))
J'ai créé un classeur vierge, et déposé sur la première
feuille 2 zones de texte et un rectangle, puis j'ai lancé cette
procédure :

Sub TypeZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
Debug.Print s.Type
Next s
End Sub

NB - Pour voir le résulat dans la fenêtre "Exécution", il faut
utiliser le menu "Affichage" ou le raccourci clavier (Cmd + G
sur Mac, Ctrl + G sous Win).



Re-bonjour,

Denis Michon m'avait donné la proc suivante :

Sub EffacerContenuZoneDeTexte()

With Worksheets("Feuil1")
.Shapes("Zone de texte 1").OLEFormat.Object.Text = ""
End With

End Sub

... qui fonctionne très bien
Comment faire maintenant pour passer en revue tous les zones de texte
d'un classeur sans connaitre leur nom (Zone de texte 1, Zone de texte
957...)

Merci par avance
François


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
François
Merci Papou et merci Michel,

Ca fonctionne parfaitement.
(j'ai juste déclaré zntxt as shape)

Je ne pense jamais au debug.print ;-(

Merci à tous les 2
Bonne soirée
François
----------------------------------------

"Michel Gaboly" a écrit dans le message news:

Bonjour,

Comme cela :

Sub EffaceZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = 17 Then s.OLEFormat.Object.Text = ""
Next s
End Sub

Pour trouver le 17, que je ne connais pas par coeur ;-)))
J'ai créé un classeur vierge, et déposé sur la première
feuille 2 zones de texte et un rectangle, puis j'ai lancé cette
procédure :

Sub TypeZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
Debug.Print s.Type
Next s
End Sub

NB - Pour voir le résulat dans la fenêtre "Exécution", il faut
utiliser le menu "Affichage" ou le raccourci clavier (Cmd + G
sur Mac, Ctrl + G sous Win).



Re-bonjour,

Denis Michon m'avait donné la proc suivante :

Sub EffacerContenuZoneDeTexte()

With Worksheets("Feuil1")
.Shapes("Zone de texte 1").OLEFormat.Object.Text = ""
End With

End Sub

... qui fonctionne très bien
Comment faire maintenant pour passer en revue tous les zones de texte
d'un classeur sans connaitre leur nom (Zone de texte 1, Zone de texte
957...)

Merci par avance
François


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
Michel Gaboly
Bonjour,

Et la boucle For Each, alors ?? ;-))))


Bonjour François
A défaut de mieux :
Sub RazZonesTexte()
Dim i As Integer
Dim NF As Integer
NF = Sheets.Count
For i = 1 To NF
For Each zntxt In Worksheets(i).Shapes
If zntxt.Type = 17 Then 'ou alors If zntxt.Name Like "Zone de
texte" Then
Worksheets(i).Shapes(zntxt.Name).OLEFormat.Object.Text = ""
End If
Next zntxt
Next i
End Sub

Cordialement
Pascal

"François" a écrit dans le message de
news:
Re-bonjour,

Denis Michon m'avait donné la proc suivante :

Sub EffacerContenuZoneDeTexte()

With Worksheets("Feuil1")
.Shapes("Zone de texte 1").OLEFormat.Object.Text = ""
End With

End Sub

... qui fonctionne très bien
Comment faire maintenant pour passer en revue tous les zones de texte
d'un classeur sans connaitre leur nom (Zone de texte 1, Zone de texte
957...)

Merci par avance
François






--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
Michel Gaboly
De rien ;-))

MsgBox peut rendre un service comparable à Debug.Print,
mais il vaut mieux l'éviter dans une boucle ;-))


Merci Papou et merci Michel,

Ca fonctionne parfaitement.
(j'ai juste déclaré zntxt as shape)

Je ne pense jamais au debug.print ;-(

Merci à tous les 2
Bonne soirée
François
----------------------------------------

"Michel Gaboly" a écrit dans le message news:

Bonjour,

Comme cela :

Sub EffaceZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = 17 Then s.OLEFormat.Object.Text = ""
Next s
End Sub

Pour trouver le 17, que je ne connais pas par coeur ;-)))
J'ai créé un classeur vierge, et déposé sur la première
feuille 2 zones de texte et un rectangle, puis j'ai lancé cette
procédure :

Sub TypeZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
Debug.Print s.Type
Next s
End Sub

NB - Pour voir le résulat dans la fenêtre "Exécution", il faut
utiliser le menu "Affichage" ou le raccourci clavier (Cmd + G
sur Mac, Ctrl + G sous Win).



Re-bonjour,

Denis Michon m'avait donné la proc suivante :

Sub EffacerContenuZoneDeTexte()

With Worksheets("Feuil1")
.Shapes("Zone de texte 1").OLEFormat.Object.Text = ""
End With

End Sub

... qui fonctionne très bien
Comment faire maintenant pour passer en revue tous les zones de texte
d'un classeur sans connaitre leur nom (Zone de texte 1, Zone de texte
957...)

Merci par avance
François


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
Denis Michon
Bonjour Michel,


"Pour trouver le 17, que je ne connais pas par coeur "

Il y a une façon simple de faire :

Dim T As MsoShapeType
T = msoTextBox

Dès que tu écris "=" excel te propose dans une liste déroulante les constantes appropriées.

Au besoin, il est possible remplacé directement 17 par sa constante texte dans la procédure...


Salutations!




"Michel Gaboly" a écrit dans le message de news:
Bonjour,

Comme cela :

Sub EffaceZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = 17 Then s.OLEFormat.Object.Text = ""
Next s
End Sub

Pour trouver le 17, que je ne connais pas par coeur ;-)))
J'ai créé un classeur vierge, et déposé sur la première
feuille 2 zones de texte et un rectangle, puis j'ai lancé cette
procédure :

Sub TypeZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
Debug.Print s.Type
Next s
End Sub

NB - Pour voir le résulat dans la fenêtre "Exécution", il faut
utiliser le menu "Affichage" ou le raccourci clavier (Cmd + G
sur Mac, Ctrl + G sous Win).



Re-bonjour,

Denis Michon m'avait donné la proc suivante :

Sub EffacerContenuZoneDeTexte()

With Worksheets("Feuil1")
.Shapes("Zone de texte 1").OLEFormat.Object.Text = ""
End With

End Sub

... qui fonctionne très bien
Comment faire maintenant pour passer en revue tous les zones de texte
d'un classeur sans connaitre leur nom (Zone de texte 1, Zone de texte
957...)

Merci par avance
François


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
François
Très intéressant :-)
merci,
François

"Denis Michon" a écrit dans le message news:
V66ub.38792$
Bonjour Michel,


"Pour trouver le 17, que je ne connais pas par coeur "

Il y a une façon simple de faire :

Dim T As MsoShapeType
T = msoTextBox

Dès que tu écris "=" excel te propose dans une liste déroulante les
constantes appropriées.


Au besoin, il est possible remplacé directement 17 par sa constante texte
dans la procédure...



Salutations!




"Michel Gaboly" a écrit dans le message de
news:

Bonjour,

Comme cela :

Sub EffaceZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = 17 Then s.OLEFormat.Object.Text = ""
Next s
End Sub

Pour trouver le 17, que je ne connais pas par coeur ;-)))
J'ai créé un classeur vierge, et déposé sur la première
feuille 2 zones de texte et un rectangle, puis j'ai lancé cette
procédure :

Sub TypeZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
Debug.Print s.Type
Next s
End Sub

NB - Pour voir le résulat dans la fenêtre "Exécution", il faut
utiliser le menu "Affichage" ou le raccourci clavier (Cmd + G
sur Mac, Ctrl + G sous Win).



Re-bonjour,

Denis Michon m'avait donné la proc suivante :

Sub EffacerContenuZoneDeTexte()

With Worksheets("Feuil1")
.Shapes("Zone de texte 1").OLEFormat.Object.Text = ""
End With

End Sub

... qui fonctionne très bien
Comment faire maintenant pour passer en revue tous les zones de texte
d'un classeur sans connaitre leur nom (Zone de texte 1, Zone de texte
957...)

Merci par avance
François


--
Cordialement,

Michel Gaboly
http://www.gaboly.com






Avatar
Michel Gaboly
Bonjour Denis,

Merci de l'info ;-))



Bonjour Michel,

"Pour trouver le 17, que je ne connais pas par coeur "

Il y a une façon simple de faire :

Dim T As MsoShapeType
T = msoTextBox

Dès que tu écris "=" excel te propose dans une liste déroulante les constantes appropriées.

Au besoin, il est possible remplacé directement 17 par sa constante texte dans la procédure...

Salutations!

"Michel Gaboly" a écrit dans le message de news:
Bonjour,

Comme cela :

Sub EffaceZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = 17 Then s.OLEFormat.Object.Text = ""
Next s
End Sub

Pour trouver le 17, que je ne connais pas par coeur ;-)))
J'ai créé un classeur vierge, et déposé sur la première
feuille 2 zones de texte et un rectangle, puis j'ai lancé cette
procédure :

Sub TypeZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
Debug.Print s.Type
Next s
End Sub

NB - Pour voir le résulat dans la fenêtre "Exécution", il faut
utiliser le menu "Affichage" ou le raccourci clavier (Cmd + G
sur Mac, Ctrl + G sous Win).


Re-bonjour,

Denis Michon m'avait donné la proc suivante :

Sub EffacerContenuZoneDeTexte()

With Worksheets("Feuil1")
.Shapes("Zone de texte 1").OLEFormat.Object.Text = ""
End With

End Sub

... qui fonctionne très bien
Comment faire maintenant pour passer en revue tous les zones de texte
d'un classeur sans connaitre leur nom (Zone de texte 1, Zone de texte
957...)

Merci par avance
François


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
Denis Michon
Et en complément, ;-))

Si tu entres dans la case de saisie dans la fenêtre "Explorateur d'objets" l'expression MsoShapeType, Tu vas obtenir la
liste de toutes les constantes.. et si tu sélectionnes une de ces constantes, tu apercevras (un "P" juste pour faire
plaisir à JPS) dans le bas de la fenêtre l'équivalent numérique de la constante texte. La fenêtre "Explorateur
d'objets" révèle beaucoup de "secrets".


Salutations!




"Michel Gaboly" a écrit dans le message de news:
Bonjour Denis,

Merci de l'info ;-))



Bonjour Michel,

"Pour trouver le 17, que je ne connais pas par coeur "

Il y a une façon simple de faire :

Dim T As MsoShapeType
T = msoTextBox

Dès que tu écris "=" excel te propose dans une liste déroulante les constantes appropriées.

Au besoin, il est possible remplacé directement 17 par sa constante texte dans la procédure...

Salutations!

"Michel Gaboly" a écrit dans le message de news:
Bonjour,

Comme cela :

Sub EffaceZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = 17 Then s.OLEFormat.Object.Text = ""
Next s
End Sub

Pour trouver le 17, que je ne connais pas par coeur ;-)))
J'ai créé un classeur vierge, et déposé sur la première
feuille 2 zones de texte et un rectangle, puis j'ai lancé cette
procédure :

Sub TypeZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
Debug.Print s.Type
Next s
End Sub

NB - Pour voir le résulat dans la fenêtre "Exécution", il faut
utiliser le menu "Affichage" ou le raccourci clavier (Cmd + G
sur Mac, Ctrl + G sous Win).


Re-bonjour,

Denis Michon m'avait donné la proc suivante :

Sub EffacerContenuZoneDeTexte()

With Worksheets("Feuil1")
.Shapes("Zone de texte 1").OLEFormat.Object.Text = ""
End With

End Sub

... qui fonctionne très bien
Comment faire maintenant pour passer en revue tous les zones de texte
d'un classeur sans connaitre leur nom (Zone de texte 1, Zone de texte
957...)

Merci par avance
François


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
sabatier
halte au feu, denis, steplé
LL m'avait déjà instancié à l'époque de son vivant, tu ne vas pas, toi,
me constancier tout de même
jps (ulcérationné par tant d'insolence)

Denis Michon a écrit:
Et en complément, ;-))

Si tu entres dans la case de saisie dans la fenêtre "Explorateur d'objets" l'expression MsoShapeType, Tu vas obtenir la
liste de toutes les constantes.. et si tu sélectionnes une de ces constantes, tu apercevras (un "P" juste pour faire
plaisir à JPS) dans le bas de la fenêtre l'équivalent numérique de la constante texte. La fenêtre "Explorateur
d'objets" révèle beaucoup de "secrets".


Salutations!




"Michel Gaboly" a écrit dans le message de news:
Bonjour Denis,

Merci de l'info ;-))




Bonjour Michel,

"Pour trouver le 17, que je ne connais pas par coeur "

Il y a une façon simple de faire :

Dim T As MsoShapeType
T = msoTextBox

Dès que tu écris "=" excel te propose dans une liste déroulante les constantes appropriées.

Au besoin, il est possible remplacé directement 17 par sa constante texte dans la procédure...

Salutations!

"Michel Gaboly" a écrit dans le message de news:
Bonjour,

Comme cela :

Sub EffaceZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
If s.Type = 17 Then s.OLEFormat.Object.Text = ""
Next s
End Sub

Pour trouver le 17, que je ne connais pas par coeur ;-)))
J'ai créé un classeur vierge, et déposé sur la première
feuille 2 zones de texte et un rectangle, puis j'ai lancé cette
procédure :

Sub TypeZonesTexte()
Dim s As Shape
For Each s In ActiveSheet.Shapes
Debug.Print s.Type
Next s
End Sub

NB - Pour voir le résulat dans la fenêtre "Exécution", il faut
utiliser le menu "Affichage" ou le raccourci clavier (Cmd + G
sur Mac, Ctrl + G sous Win).



Re-bonjour,

Denis Michon m'avait donné la proc suivante :

Sub EffacerContenuZoneDeTexte()

With Worksheets("Feuil1")
.Shapes("Zone de texte 1").OLEFormat.Object.Text = ""
End With

End Sub

... qui fonctionne très bien
Comment faire maintenant pour passer en revue tous les zones de texte
d'un classeur sans connaitre leur nom (Zone de texte 1, Zone de texte
957...)

Merci par avance
François


--
Cordialement,

Michel Gaboly
http://www.gaboly.com



--
Cordialement,

Michel Gaboly
http://www.gaboly.com







1 2