Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

manque un bout de code...

23 réponses
Avatar
Emma
(RE) bonjour,

Je cherche la transition dans le code.
D'abord, je crée une zone de texte sur une selection de cellules:

Sub ZoneTexte()
y = Selection.Rows.Count
x = Selection.Columns.Count
leTexte = "FRANCAIS"
Set ici = ActiveCell
T = ici.Top
L = ici.Left
W = ici.Width
H = ici.Height
Set zText = ActiveSheet.Shapes. _
AddTextbox(msoTextOrientationHorizontal, L, T, W * x, H * y)
zText.TextFrame.Characters.Text = leTexte

End Sub

Puis, avant de refermer le code, je voudrais centrer le tout:

With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.Orientation = xlHorizontal
.AutoSize = False
End With


Le problème, c'est qu'il ne voit pas que je lui indique CETTE zone de texte.

Pourriez vous m'aider à lier ces 2 codes?

Merci

Emma

10 réponses

1 2 3
Avatar
J
Bonjour Emma et bonne année
Les bons sont déjà couchés, alors voilà.
Ce truc fonctionne, mais il traite toutes les shapes de la feuille ...
Mais c'est un début
Bon courage
J@@


Sub ZoneTexte()
y = Selection.Rows.Count
x = Selection.Columns.Count
letexte = "FRANCAIS"
Set ici = ActiveCell
T = ici.Top
l = ici.Left
W = ici.Width
H = ici.Height
Set zText = ActiveSheet.Shapes. _
AddTextbox(msoTextOrientationHorizontal, l, T, W * x, H * y)
zText.TextFrame.Characters.Text = letexte

For Each Shape In ActiveSheet.Shapes
Shape.Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Orientation = xlHorizontal
.AutoSize = False
End With
Next
End Sub

(RE) bonjour,

Je cherche la transition dans le code.
D'abord, je crée une zone de texte sur une selection de cellules:

Sub ZoneTexte()
y = Selection.Rows.Count
x = Selection.Columns.Count
leTexte = "FRANCAIS"
Set ici = ActiveCell
T = ici.Top
L = ici.Left
W = ici.Width
H = ici.Height
Set zText = ActiveSheet.Shapes. _
AddTextbox(msoTextOrientationHorizontal, L, T, W * x, H * y)
zText.TextFrame.Characters.Text = leTexte

End Sub

Puis, avant de refermer le code, je voudrais centrer le tout:

With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.Orientation = xlHorizontal
.AutoSize = False
End With


Le problème, c'est qu'il ne voit pas que je lui indique CETTE zone de texte.

Pourriez vous m'aider à lier ces 2 codes?

Merci

Emma




Avatar
Tatanka
Bonjour Emma,

Et si tu essayais ceci :

Sub ZoneTexte()
y = Selection.Rows.Count
x = Selection.Columns.Count
leTexte = "FRANCAIS"
Set ici = ActiveCell
T = ici.Top
L = ici.Left
W = ici.Width
H = ici.Height
Set zText = ActiveSheet.Shapes. _
AddTextbox(msoTextOrientationHorizontal, L, T, W * x, H * y)
With zText.TextFrame
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Characters.Text = leTexte
End With
End Sub

Bonne et heureuse année !

Serge




"Emma" a écrit dans le message de news:
(RE) bonjour,

Je cherche la transition dans le code.
D'abord, je crée une zone de texte sur une selection de cellules:

Sub ZoneTexte()
y = Selection.Rows.Count
x = Selection.Columns.Count
leTexte = "FRANCAIS"
Set ici = ActiveCell
T = ici.Top
L = ici.Left
W = ici.Width
H = ici.Height
Set zText = ActiveSheet.Shapes. _
AddTextbox(msoTextOrientationHorizontal, L, T, W * x, H * y)
zText.TextFrame.Characters.Text = leTexte

End Sub

Puis, avant de refermer le code, je voudrais centrer le tout:

With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.Orientation = xlHorizontal
.AutoSize = False
End With


Le problème, c'est qu'il ne voit pas que je lui indique CETTE zone de texte.

Pourriez vous m'aider à lier ces 2 codes?

Merci

Emma




Avatar
LSteph
Bonjour,

Sub ZoneTexte()
Dim Ztext As Shape
Dim L As Long, T As Long, W As Long, H As Long, _
i As Long, j As Long, leTexte As String
leTexte = "FRANCAIS"
With Selection
T = .Cells(1, 1).Top
L = .Cells(1, 1).Left
For i = 1 To .Rows.Count
For j = 1 To .Columns.Count
If j = 1 Then H = H + Cells(i, j).Height
If i = 1 Then W = W + Cells(i, j).Width
Next j
Next i
End With
Set Ztext = ActiveSheet.Shapes. _
AddTextbox(msoTextOrientationHorizontal, L, T, W, H)

With Ztext.TextFrame
.Characters.Text = leTexte
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.AutoSize = False
End With
End Sub

'lSteph


(RE) bonjour,

Je cherche la transition dans le code.
D'abord, je crée une zone de texte sur une selection de cellules:

Sub ZoneTexte()
y = Selection.Rows.Count
x = Selection.Columns.Count
leTexte = "FRANCAIS"
Set ici = ActiveCell
T = ici.Top
L = ici.Left
W = ici.Width
H = ici.Height
Set zText = ActiveSheet.Shapes. _
AddTextbox(msoTextOrientationHorizontal, L, T, W * x, H * y)
zText.TextFrame.Characters.Text = leTexte

End Sub

Puis, avant de refermer le code, je voudrais centrer le tout:

With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.Orientation = xlHorizontal
.AutoSize = False
End With


Le problème, c'est qu'il ne voit pas que je lui indique CETTE zone de texte.

Pourriez vous m'aider à lier ces 2 codes?

Merci

Emma




Avatar
LSteph
Bonjour les amis,

Meilleurs voeux,

je me suis permis d'ajouter mon grain de sel,
les cellules peuvent avoir des largeurs et hauteurs différentes

(je le précise car outre les déclarations vous auriez l'impression que
c'est pareil!
C'est curieux ce serveur n'affichait rien cette nuit enfin vers minuit
ici, j'ai même refait un post en solo après pour test (cette fois sur
google et il est apparu, avant nos différents posts que je ne trouve que
ce matin)

cela me remet sur les rails d'un truc qui me trotte déjà depuis un bout
de temps...
voir le sujet "faire semblant de fusionner"

@+

--
lSteph


(RE) bonjour,

Je cherche la transition dans le code.
D'abord, je crée une zone de texte sur une selection de cellules:

Sub ZoneTexte()
y = Selection.Rows.Count
x = Selection.Columns.Count
leTexte = "FRANCAIS"
Set ici = ActiveCell
T = ici.Top
L = ici.Left
W = ici.Width
H = ici.Height
Set zText = ActiveSheet.Shapes. _
AddTextbox(msoTextOrientationHorizontal, L, T, W * x, H * y)
zText.TextFrame.Characters.Text = leTexte

End Sub

Puis, avant de refermer le code, je voudrais centrer le tout:

With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.Orientation = xlHorizontal
.AutoSize = False
End With


Le problème, c'est qu'il ne voit pas que je lui indique CETTE zone de texte.

Pourriez vous m'aider à lier ces 2 codes?

Merci

Emma




Avatar
Emma
Bonjour et merci pour votre investissement.

Vos propositions fonctionnent bien, effectivement, pour lier les 2 macros.
Le problème, c'est que la zone de texte, qui avant s'insérer pile-poil dans
les cellules concernées, dépassent un peu vers le bas.

ex: si je sélectionne B3:B13, je déborde un peu sur B14. Maniaquerie me
sirez-vous.... certes... mais le but est tellement proche...

Merci à vous de me dire ce que vous en pensez.

Emma
Avatar
lSteph
Bonjour,
Si c'est pas dans la même macro déclarer Dim Ztext as Shape en haut du
module au dessus de la première sub et non dedans.
Sinon avec le code d'origine le cadre est décalé des cellules sitôt
qu'elles n'ont pas toutes la même taille.
Le mien déborde en effet par ailleurs, je suppose à raison de
l'arrondi (1 de trop à chaque addition d'une cellule)+ bordure.

Il faudrait déclarer h et w as double au lieu de long

pour avoir un chiffre précis et réduire d'un dixième point pour la
bordure
msoTextOrientationHorizontal, L, T, W - 0.1, H - 0.1

@+
--
lSteph

On 2 jan, 10:49, "Emma" wrote:
Bonjour et merci pour votre investissement.

Vos propositions fonctionnent bien, effectivement, pour lier les 2 macros.
Le problème, c'est que la zone de texte, qui avant s'insérer pile-poil dans
les cellules concernées, dépassent un peu vers le bas.

ex: si je sélectionne B3:B13, je déborde un peu sur B14. Maniaquerie m e
sirez-vous.... certes... mais le but est tellement proche...

Merci à vous de me dire ce que vous en pensez.

Emma


Avatar
Emma
Merci beaucoup à Serge et à Stef pour leur investissement.

Je pense que je vais garder la proposition de Serge, car celle de Stef
dépasse mon niveau de compétence... désolée

Dernière petite question: Où puis-je placer des codes pour travailler la
mise en forme de ma zone de texte (grosseur des traits, couleur du fond...)?
A vrai dire, j'en suis encore au stade de faire enregistrer mes macros et de
regarder le code proposée par excel. Si vous avez une piste à me donner pour
me former (bouquins, CD... je suis preneuse!)

Merci encore à vous.

Emma

"lSteph" a écrit dans le message de
news:
Bonjour,
Si c'est pas dans la même macro déclarer Dim Ztext as Shape en haut du
module au dessus de la première sub et non dedans.
Sinon avec le code d'origine le cadre est décalé des cellules sitôt
qu'elles n'ont pas toutes la même taille.
Le mien déborde en effet par ailleurs, je suppose à raison de
l'arrondi (1 de trop à chaque addition d'une cellule)+ bordure.

Il faudrait déclarer h et w as double au lieu de long

pour avoir un chiffre précis et réduire d'un dixième point pour la
bordure
msoTextOrientationHorizontal, L, T, W - 0.1, H - 0.1

@+
--
lSteph

On 2 jan, 10:49, "Emma" wrote:
Bonjour et merci pour votre investissement.

Vos propositions fonctionnent bien, effectivement, pour lier les 2 macros.
Le problème, c'est que la zone de texte, qui avant s'insérer pile-poil
dans

les cellules concernées, dépassent un peu vers le bas.

ex: si je sélectionne B3:B13, je déborde un peu sur B14. Maniaquerie me
sirez-vous.... certes... mais le but est tellement proche...

Merci à vous de me dire ce que vous en pensez.

Emma


Avatar
lSteph
Bonjour,

mettre cela dans VBA dans un module standard,
celle revue de Modeste est encore mieux amha:

Sub ZoneTexte(matiere As String)
Dim Ztext As Shape
Dim L As Long, T As Long, W As Double, H As Double

With Selection
T = .Top
L = .Left
H = .Height
W = .Width
.Value = matiere
End With
Set Ztext = ActiveSheet.Shapes. _
AddTextbox(msoTextOrientationHorizontal, L, T, W-0.1, H-0.1)

With Ztext.TextFrame
.Characters.Text = matiere
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.AutoSize = False
End With

End Sub
'------------ajouter une macro par matière complémentaire
Sub addFr()
ZoneTexte ("Français")
End Sub
Sub addMh()
ZoneTexte ("Maths")
End Sub
Sub addHG()
ZoneTexte ("Histoire géo")
End Sub
Sub addEPS()
ZoneTexte ("EPS")
End Sub




On 2 jan, 14:32, "Emma" wrote:
Merci beaucoup à Serge et à Stef pour leur investissement.

Je pense que je vais garder la proposition de Serge, car celle de Stef
dépasse mon niveau de compétence... désolée

Dernière petite question: Où puis-je placer des codes pour travailler la
mise en forme de ma zone de texte (grosseur des traits, couleur du fond... )?
A vrai dire, j'en suis encore au stade de faire enregistrer mes macros et de
regarder le code proposée par excel. Si vous avez une piste à me donne r pour
me former (bouquins, CD... je suis preneuse!)

Merci encore à vous.

Emma

"lSteph" a écrit dans le message denews:bddf6b15-c5
Bonjour,
Si c'est pas dans la même macro déclarer Dim Ztext as Shape en haut du
module au dessus de la première sub et non dedans.
Sinon avec le code d'origine le cadre est décalé des cellules sitôt
qu'elles n'ont pas toutes la même taille.
Le mien déborde en effet par ailleurs, je suppose à raison de
l'arrondi (1 de trop à chaque addition d'une cellule)+ bordure.

Il faudrait déclarer h et w as double au lieu de long

pour avoir un chiffre précis et réduire d'un dixième point pour la
bordure
msoTextOrientationHorizontal, L, T, W - 0.1, H - 0.1

@+
--
lSteph

On 2 jan, 10:49, "Emma" wrote:

Bonjour et merci pour votre investissement.

Vos propositions fonctionnent bien, effectivement, pour lier les 2 macro s.
Le problème, c'est que la zone de texte, qui avant s'insérer pile-po il
dans

les cellules concernées, dépassent un peu vers le bas.

ex: si je sélectionne B3:B13, je déborde un peu sur B14. Maniaquerie me
sirez-vous.... certes... mais le but est tellement proche...

Merci à vous de me dire ce que vous en pensez.

Emma




Avatar
Trirème
Bonjour Emma

A vrai dire, j'en suis encore au stade de faire enregistrer mes macros et de
regarder le code proposée par excel.
T'inquiète pas Emma, j'en suis encore là... ou au stade juste après.

C'est encore le meilleur moyen de découvrir le vocabulaire que VBA utilise.
Bon, après reste plus qu'à élaguer

Cordialement,
Trirème

Avatar
Trirème
...
Le mien déborde en effet par ailleurs, je suppose à raison de
l'arrondi (1 de trop à chaque addition d'une cellule)+ bordure.

Il faudrait déclarer h et w as double au lieu de long

pour avoir un chiffre précis et réduire d'un dixième point pour la
bordure
msoTextOrientationHorizontal, L, T, W - 0.1, H - 0.1


:-) Par tâtonnements, j'ai réussi à trouver la formule qu'utilise Excel pour
"arrondir" et transformer en valeurs réelles les valeurs qu'on lui demande...
J'ai cette formule au boulot que je retrouve demain :-( si ça t'intéresse je
ferai suivre.
J'ai utilisé avec bonheur cette formule pour exploiter au mieux les tailles des
shapes dans une seule cellule dans mes propres "In Cell Charting" (voir daily
dose of excel :
http://www.dailydoseofexcel.com/archives/2006/02/05/in-cell-charting/)

Cordialement,
Trirème

1 2 3