Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copie Zone Texte

  • Initiateur de la discussion Initiateur de la discussion maval
  • Date de début Date de début

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 !

maval

XLDnaute Barbatruc
Bonjour


J'ai sur une feuille Excel un groupe de Zone Texte avec des noms de ville.
Est-il possible en VBA de copier l'ensemble des zone texte dans une colonne ex."B3"

je joint mon fichier exemple

Je vous remercie d'avance
 

Pièces jointes

Re : Copie Zone Texte

Bonjour maval,

Oui bien sûr, essaie le code ci-dessous :

Code:
Sub Lister_Textes()
    
    i = 3
    For Each Item In ActiveSheet.Shapes("Groupe_Pays").GroupItems
        Cells(i, 2) = Item.TextEffect.Text
        i = i + 1
    Next
    
End Sub

Bonne journée
 
Re : Copie Zone Texte

Bonjour maval,

Code:
Sub ListeTexteShapes()
Dim s As Shape, t$, a
Application.ScreenUpdating = False
On Error Resume Next 'si Groupe_Pays n'existe pas
With ActiveSheet
  '---dégroupage---
  .Shapes("Groupe_Pays").Ungroup
  '---création de la liste---
  For Each s In .Shapes
    If s.Name Like "Rectangle*" Then
      t = t & Chr(1) & s.TextFrame.Characters.Text
    End If
  Next
  t = Mid(t, 2)
  '---Groupage---
  For Each s In .Shapes
    If s.Name Like "Rectangle*" Then s.Select False
  Next
  Selection.ShapeRange.Group.Name = "Groupe_Pays"
  ActiveCell.Activate
  '---restitution en B3---
  a = Split(t, Chr(1))
  .Range("B3:B" & .Rows.Count) = "" 'RAZ
  .[B3].Resize(UBound(a) + 1) = Application.Transpose(a)
  .[B3].Resize(UBound(a) + 1).Sort .[B3], xlAscending, Header:=xlNo 'tri
End With
End Sub
Edit : bonjour NezQuiCoule, oui votre solution est plus simple, mais il faut qu'il n'y ait que des rectangles dans le groupe.

A+
 
Dernière édition:
Re : Copie Zone Texte

Re,

Deux remarques.

1) La solution de NezQuiCoule fonctionne sur Excel 2010 mais pas sur Excel 2003.

2) Ma solution n'affichait pas toute la liste, j'avais oublié le + 1 :

Code:
'---
  .[B3].Resize(UBound(a) + 1) = Application.Transpose(a)
  .[B3].Resize(UBound(a) + 1).Sort .[B3], xlAscending, Header:=xlNo 'tri
Je corrige le poste précédent.

A+
 
Re : Copie Zone Texte

Re,

Pour éviter de dégrouper-regrouper, une solution qui fonctionne sur Excel 2003 :

Code:
Sub ListeTexteShapes()
Dim s As Shape, t$, a
Application.ScreenUpdating = False
With ActiveSheet
  '---création de la liste---
  For Each s In .Shapes("Groupe_Pays").GroupItems
    s.Select
    If s.Name Like "Rectangle*" Then _
      t = t & Chr(1) & s.TextFrame.Characters.Text
  Next
  ActiveCell.Activate
  t = Mid(t, 2)
  a = Split(t, Chr(1))
  '---restitution en B3---
  .Range("B3:B" & .Rows.Count) = "" 'RAZ
  .[B3].Resize(UBound(a) + 1) = Application.Transpose(a)
  .[B3].Resize(UBound(a) + 1).Sort .[B3], xlAscending, Header:=xlNo
End With
End Sub
A+
 
Dernière édition:
Re : Copie Zone Texte

Bonjour maval, NezQuiCoule Bonjour Job 🙂

Surtout pour saluer Job,

J'ai testé la dernière proposition de Job75 sous 2007 : C'est OK

Une variante de la même, sans transpose ni select:
VB:
Sub ListeTexteShapes_2()
Dim s As Shape, t As Variant, i&
With ActiveSheet
    With .Shapes("Groupe_Pays")
        ReDim t(1 To .GroupItems.Count, 1 To 2)
        For Each s In .GroupItems
            If s.Name Like "Rectangle*" Then
                i = i + 1
                t(i, 1) = s.TextFrame.Characters.Text
            End If
        Next s
    End With
    .Range("B3:B" & .Rows.Count).ClearContents
    .[B3].Resize(i, 1) = t
    .[B3].Resize(i).Sort .[B3], xlAscending, Header:=xlNo
End With
End Sub

Cordialement
 
Re : Copie Zone Texte

Bonjour Efgé, heureux de te croiser,

Si j'utilise .Select c'est pour que la solution fonctionne aussi sur Excel 2003.

Ta solution ne fonctionne pas sur 2003.

A+
 
- 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
3
Affichages
147
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…