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

VBA : récupération des formats cellule d'une feuille

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 !

dionys0s

XLDnaute Impliqué
ReBonjour le forum

J'ai une feuille (cf. pièce jointe) dont j'aimerais mémoriser tous les formats cellule (plage A1:G82) pour pouvoir tous les garder en mémoire dans une macro.

Existe-t-il un moyen rapide "d'extraire" ces formats, et de redéfinir toutes les cellules de ma plage par ces même formats ?

D'avance merci pour votre aide 🙂
 

Pièces jointes

Re : VBA : récupération des formats cellule d'une feuille

Salut Diony

je ne suis pas trop certain de voir où vous souhaitez en venir avec ça. Voici quand même une piste de solution. Je vous propose de traverser chacune des cellules de votre plage et d'en conserver les propriétés dans des variables tablo. Vous pourrez ensuite les réutiliser comme bon vous semble et les attribuer aux cellules d'une autre plage de même dimensions. Je n'ai mis que 2 variables tablo correspondant à la couleur et au format, bien sur pouvez en ajouter d'autre (.font.bold par exemple etc...) et simplement créer d'autres variables à ajouter à la boucle.

Voici à quoi pourrait ressembler le code :

VB:
Dim Couleur(1 To 10000) As Variant
Dim Format_Cel(1 To 10000) As Variant

Sub Test()
Dim Plage As Range
Dim Compteur As Integer
Dim Cel

Set Plage = Range(Cells(1, 1), Cells(82, 7))
Compteur = 1

For Each Cel In Plage
    Couleur(Compteur) = Cel.Interior.ColorIndex
    Format_Cel(Compteur) = Cel.NumberFormat
    Compteur = Compteur + 1
Next Cel

End Sub

Cordialement,

Étienne
 
Re : VBA : récupération des formats cellule d'une feuille

Bonjour dionys0s,
Je sais que ma réponse ne correspond pas à la demande mais, pourquoi monter tous les formats de cellules en mémoire ?
Une proposition: en début de macro :
Code:
[COLOR=blue]Sub[/COLOR] Macro3()
Application.DisplayAlerts = [COLOR=blue]False[/COLOR]
Sheets("Formulaire").Range("A1:G82").Copy
Sheets.Add After:=Sheets(Sheets.Count)
[COLOR=blue]With[/COLOR] Sheets(Sheets.Count)
    .Range("A1").PasteSpecial Paste:=xlPasteFormats
    .Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
[COLOR=blue]End With[/COLOR]
Et en fin de macro tu fais la manip inverse:
Code:
Sheets(Sheets.Count).Range("A1:G82").Copy
[COLOR=blue]With[/COLOR] Sheets("La_feuille_de_destination")
    .Range("A1").PasteSpecial Paste:=xlPasteFormats
    .Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
[COLOR=blue]End With[/COLOR]
Sheets(Sheets.Count).Delete
Application.DisplayAlerts = [COLOR=blue]True[/COLOR]
[COLOR=blue]End Sub[/COLOR]
C'est juste une idée.
Cordialement
 
- 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

  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…