Autres Paramétrer Sheets("DESSIN-F").Shapes.Range(Array("92", "91", "93")).Select

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 !

bernard_metz

XLDnaute Nouveau
Bonjour,

J'ai ce code : Sheets("DESSIN-F").Shapes.Range(Array("92", "91", "93")).Select

Je voudrais remplacer "92", "91", "93" par une variable afin de pouvoir grouper plusieurs dessins sur une feuille.

Pouvez-vous m'aider à ce sujet svp?

Merci d'avance
 
Bonjour bernard_metz, vgendron,

Testez cette macro :
VB:
Sub Regrouper()
Dim s As Shape, a(), n
With Sheets("DESSIN-F")
    For Each s In .Shapes
        If IsNumeric(s.Name) Then
            ReDim Preserve a(n)
            a(n) = s.Name
            n = n + 1
        End If
    Next
    .Shapes.Range(a).Select
End With
End Sub
Elle regroupe toutes les Shapes dont les noms sont des nombres.

A+
 
Bonjour bernard_metz, vgendron,

Testez cette macro :
VB:
Sub Regrouper()
Dim s As Shape, a(), n
With Sheets("DESSIN-F")
    For Each s In .Shapes
        If IsNumeric(s.Name) Then
            ReDim Preserve a(n)
            a(n) = s.Name
            n = n + 1
        End If
    Next
    .Shapes.Range(a).Select
End With
End Sub
Elle regroupe toutes les Shapes dont les noms sont des nombres.

A+
Merci c'est parfait! ça marche et fait parfaitement le job ;-)

Je vois ici la commande If IsNumeric(s.Name) Then... cela veut-il dire que cela prend tous les dessin qui ont un format numérique?

Si oui quel serait aussi la fonction pour du texte?
 
Je vois ici la commande If IsNumeric(s.Name) Then... cela veut-il dire que cela prend tous les dessin qui ont un format numérique?

Si oui quel serait aussi la fonction pour du texte?
Le nom des Shapes est toujours un texte mais si ce texte est un nombre comme "120" ou "15,5" la Shape sera retenue.

Si le nom des Shapes doit être du genre "R09" ou "R10" on utilisera Like :
VB:
If S.Name Like "R##" Then
 
Bonjour,
oups c'est bien sur il n'y a qu'à retirer le test ;-)
Oui mais s'il y a des listes de validation il y aura bug car ce sont des Shapes...

Pour éviter ce bug utilisez :
VB:
Sub Regrouper()
Dim s As Shape, a(), n
With Sheets("DESSIN-F")
    For Each s In .Shapes
        If Not s.Name Like "Drop Down*" Then
            ReDim Preserve a(n)
            a(n) = s.Name
            n = n + 1
        End If
    Next
    .Shapes.Range(a).Select
End With
End Sub

A+
 
Bonjour à tous🙂,

La p'tite version de ma pomme.

Une fonction générique IMGactiveSheet() qui renvoie un objet composé des images de la feuille active.
S'il n'y a pas d'image sur la feuille active alors le nombre d'élément de IMGactiveSheet est 0.
Le code de la fonction :
VB:
Function IMGactiveSheet() As DrawingObjects
   On Error Resume Next: Set IMGactiveSheet = ActiveSheet.DrawingObjects: On Error GoTo 0
End Function

Et un exemple d'utilisation pour grouper (le cas échéant) et ensuite aussi sélectionner le groupement (le cas échéant).
Cliquez sur le gros bouton bleu.
VB:
Sub TESTgrouperETselectionner()
Dim mesImages As Object
   Sheets("DESSIN-F").Select        ' sélectionner la feuille concernée (Obligatoire)
   Set mesImages = IMGactiveSheet   ' objet contenant l'ensemble des images d'ActiveSheet
   If mesImages.Count > 1 Then mesImages.Group  ' groupement (si plus d'une image)
   If mesImages.Count > 0 Then mesImages.Select ' sélection si au moins une image
End Sub

edit : bonjour et bonne après-midi @job75😉.
...
 

Pièces jointes

Dernière édition:
- 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
1
Affichages
406
Réponses
5
Affichages
567
Réponses
7
Affichages
1 K
Réponses
9
Affichages
1 K
  • Question Question
Microsoft 365 transfère infos
Réponses
21
Affichages
2 K
Retour