Copier/Coller boutons sauf texte par macro

Bonjour le forum

Cette macro fait presque bien le boulot sauf qu'elle recopie aussi le texte

Merci pour vos éventuels retours

Cordialement

Option Explicit
Sub RecopieBoutons()
 Dim Nombre As Integer, I As Integer
 Dim Forme As Object

  Nombre = ActiveWorkbook.Sheets.Count
  Application.ScreenUpdating = False

  For I = 2 To Nombre               ' Copier à partir de la 2ème feuille
    Sheets(I).Range("A1:E1") = ""
    For Each Forme In Sheets(I).Shapes
      With Forme
      End With
    Next Forme
    Sheets(1).Range("A1:E1").Copy Sheets(I).Range("A1:E1")    ' Sheets(1) = feuille
  Next I
End Sub

Bonjour al87

C'est quoi ce code

Vous pouvez me dire a quoi vous sert !?

For Each Forme In Sheets(I).Shapes
      With Forme
      End With
    Next Forme

Vous souhaiter faire quoi au juste ?

@+

Bonjour BrunoM45

Recopier des boutons (Rectangle)

Bonjour al87, Salut BrunoM45,

Voici un essai si j'ai bien compris le besoin :

Sub RecopieBoutons()
dim sh as shape, i&
For Each sh In Sheets(1).Shapes
    if typename(sh) = "Button" then
        for i = 2 to sheets.count
            CopyShape sh, Sheets(i)
        next i
    end if
Next sh
End Sub

sub CopyShape(SourceShape as shape, Destination as worksheet, optional NewText as string = "")
with SourceShape
    sAddress$ = .topleftcell.address
    OldText$ = .texteffect.text
    .texteffect.text = NewText
    .copy
    Destination.paste Destination.range(sAddress)
    .texteffect.text = OldText
end with
end sub

Cdlt,

Bonjour tout le monde,

@3GB, tiens, tu mets des choses dans les boucles, toi ?

D'ailleurs, à quoi sert le $ dans sAddress$ ?

Cadeau, en voilà une belge : il fait beau et chaud.

Salut JoyeuxNoel,

J'ai réorganisé mon code juste avant que tu ne répondes^^. De quoi parles-tu ?

Le $ est le type de la variable. Vu qu'il est possible qu'il y ait l'Option Explicit, je la déclare ainsi.

Malheureusement, ici, il fait froid et moite !

C'était juste une petite référence à la boucle vide de AL87 😏

Donc ça revient à un dim en début de module ? Une différence quelconque ?

C'est ce que j'avais cru comprendre mais je n'étais pas sûr.

Oui, en principe, ça revient plus au moins à la même chose. Je reproduis une pratique que j'ai vue sans m'être documenté donc je ne saurais pas dire s'il y a une différence particulière. En tout cas, pour l'instant, je n'en vois aucune si ce n'est qu'il n'est a priori pas possible de l'utiliser avec des variables objet...

Bonjour le fil

Le fait de mettre un $ ou autre, derrière le nom d'une variable ce n'est que pour définir son type : $ = String

Mais ça ne définit pas la variable, la preuve quand on, utilise "Option Explicit"

image

A+

Re,

Bonjour Bruno,

Du coup, comme VBA se débrouille pour typer lui-même, j'ai comme l'impression que le $ ici ne servira à rien. Je fais fausse route ? Ça fait quand même gagner quelque chose à un moment ?

Ah, au temps pour moi alors, je pensais que ça valait déclaration .

Pour l'intérêt, c'est que la variable est de type string et non variant et, sauf erreur, ça laisse plus de mémoire disponible. Et surtout, en ce qui me concerne, je crois que j'utilise cette "argumentation" lorsqu'une variable doit rentrer en argument typé d'une fonction ou procédure paramétrée. J'ai quand même un doute car avec mon mac, la non déclaration est bloquante...

Ah oui, j'avais oublié que tu bossais avec handicap ^^

Lol, handicap pour Excel, pas pour le reste, je continue de l'affirmer !!!

Mais oui, je n'ai pas windows à disposition actuellement... Et je dois avouer que je n'essaie plus de faire des codes "élaborés" avec Excel mac... C'est surtout pour des petits tests ou pour des fichiers perso. Et je rencontre moins de contrainte sur windows.

Bonjour le forum

Voilà

Merci à tous

Cordialement

Sub AjouterBouton()                           ' Avant de lancer la macro mettre toutes les colonnes identiques de chaque feuille
Dim I As Integer, Sh As Shape, Sh1 As Shape

  Application.ScreenUpdating = False

  For I = 2 To Sheets.Count
  ' On enlève les boutons de la page de reception
    For Each Sh In Sheets(I).Shapes
      If Sh.Type = msoAutoShape Then      ' Type = 1
        Sh.Cut
      End If
    Next Sh

    For Each Sh1 In Sheets(1).Shapes
      If Sh1.Type = msoAutoShape Then
        Sh1.Copy
        Sheets(I).Paste Destination:=Sheets(I).Range("B1")
        With Sheets(I).Shapes(Sheets(I).Shapes.Count)
          .Left = Sh1.Left
          .Top = Sh1.Top
        End With
      End If
    Next Sh1
  Next I
End Sub

Sub SupprimerBouton()
Dim I As Integer, Sh As Shape, Sh1 As Shape

  Application.ScreenUpdating = False

  For I = 2 To Sheets.Count
  ' On enlève les boutons de la page de reception
    For Each Sh In Sheets(I).Shapes
      If Sh.Type = msoAutoShape Then      ' Type = 1
        Sh.Cut
      End If
    Next Sh
  Next I
End Sub
Rechercher des sujets similaires à "copier coller boutons sauf texte macro"