XL 2021 Encadrement de cellule sur tableau dynamique

  • Initiateur de la discussion Initiateur de la discussion treza88
  • 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 !

treza88

XLDnaute Occasionnel
Bonjour à tous,

J'ai un tableau qui ressemble au fichier joint, je voudrais trouver le meilleur moyen d'encadrer les cellules qui vont de I2 a V24.
Dans un tableau fixe, pas de soucis, mais je suis dans un tableau qui par macro augmente en longueur, comme en hauteur, et pas forcément tout le temps, des fois que la longueur ou que la hauteur ou pas du tout.

J'ai fait une macro qui rempli automatiquement toutes la zone, mais sur le fichier de travail est comporte plusieurs millier de ligne et centaine de colonnes, et ça prend un certains temps sur l’exécution de la macro complète.

Il y aurait il un moyen de le faire autrement ?

Je pensais éventuellement à une MFC, mais je ne sais pas si c'est possible.
 

Pièces jointes

Bonjour

VB:
Sub Encdrement()
    With Sheets("Feuil1").Range("I2:" & Sheets("Feuil1").Cells.SpecialCells(xlLastCell).Address).Borders
        .LineStyle = xlNone ' Effacer toutes les bordures existantes
        .LineStyle = xlContinuous ' Recréer des bordures autour de chaque cellule
        .Weight = xlThin ' Recréer des bordures autour de chaque cellule
        .ColorIndex = xlAutomatic ' Recréer des bordures autour de chaque cellule
    End With
End Sub
 
bonjour teraz88,
un essai
VB:
Sub Encdrement()
     ActiveWorkbook.Save
     With Sheets("Feuil1")
          Set c1 = .Cells.Find("*", after:=.Range("A1"), searchorder:=xlRows, searchdirection:=xlPrevious)     'dernière cellule en bas
          Set c2 = .Cells.Find("*", after:=.Range("A1"), searchorder:=xlColumns, searchdirection:=xlPrevious)     'dernière cellule non-vide de la première ligne
          'MsgBox c1.Address & vbLf & c2.Address
          With .Range("I1")                  'votre coin gauche
               .Resize(, Columns.Count - .Column + 1).EntireColumn.Borders.LineStyle = xlNone     'supprimer les bordures existantes
               .Resize(c1.Row - .Row + 1, Application.Max(1, c2.Column - .Column + 1)).Borders.LineStyle = xlContinuous     'établir des nouvelle bordures
          End With
     End With
End Sub
 
Merci à vous trois, même si si le but était à la base d'éviter de passer par une macro, j'ai trouvé des choses intéressante dans vos codes.

Par contre sylvanu, n'y a t'il pas un moyen de remplacer "zz" et "1000" par une recherche de la dernière ligne non vide et la dernière colonne non vide ?
Mais en formule je suis un peu largué.
 
Par contre sylvanu, n'y a t'il pas un moyen de remplacer "zz" et "1000" par une recherche de la dernière ligne non vide et la dernière colonne non vide ?
C'est exactement ce que fait la formule.
VB:
EQUIV("ZZZ";$A:$A;1);
Recherche "zzz" en colonne A, et comme évidemment il ne la trouve pas, il renvoie la dernière cellule non vide en A.
Code:
EQUIV(9^9;$1:$1)
Recherche le nombre 9^9 en ligne 1, et comme évidemment il ne la trouve pas, il renvoie la dernière cellule non vide en ligne 1.
 
Bonjour 😉,

Une autre p'tite macro. Pour 15 000 lignes de données et 500 colonnes, l'encadrement prend 1,4 s (2,1 s à la première exécution).

Le bouton Initialiser permet d'initialiser à 15 000 lignes de données et 500 colonnes. A exécuter avant d'encadrer.

Le code de la macro :
VB:
Sub Encadrement()
Dim debut#
   debut = Timer
   Application.ScreenUpdating = False
   Cells(2, "i").Borders.LineStyle = xlContinuous
   Cells(2, "i").Copy
   Range(Cells(2, "i"), Cells(Cells(Rows.Count, "a").End(xlUp).Row, Cells(1, Columns.Count).End(xlToLeft).Column)).PasteSpecial xlPasteFormats
   MsgBox Format(Timer - debut, "0.00\ sec.")
End Sub
 

Pièces jointes

Dernière édition:
Bonjour,

J'ai un tableau qui ressemble au fichier joint, je voudrais trouver le meilleur moyen d'encadrer les cellules qui vont de I2 a V24.
Dans un tableau fixe, pas de soucis, mais je suis dans un tableau qui par macro augmente en longueur, comme en hauteur, et pas forcément tout le temps, des fois que la longueur ou que la hauteur ou pas du tout.
Ne peux-tu utiliser un Tableau Structuré ?
 
Bonjour,


Ne peux-tu utiliser un Tableau Structuré ?
J'allais le dire !
Si tu utilises l'objet tableau d'Excel directement, les formules, la mise en forme, etc, se mettront à jour tout seul.
Et tu peux faire appel à ce tableau depuis d'autres endroits de ton classeur (voir d'autres) via les références structurées de manière très robuste (bon d'un autre côté désolé, j'adore les tableaux).
 
Bonjour à tous,

Désolé TooFatBoy, La Mouette, mapomme et sylvanu pour le délai de réponse, mais je n'ai pas eu le temps de la semaine pour revenir sur le forum avec suffisamment de temps pour répondre et bien entendu je ne met personne en ignoré( je ne savais même pas que l'on pouvait le faire). j’essaierai d’être un peu plus présent la prochaine fois.

En tout cas merci pour vos propositions à vous tous.

Par contre je ne pense pas qu'un tableau structuré fasse pas l'affaire, malgré que mes connaissances en tableau structuré soit un peu légère, donc je peux me tromper.
Car ce tableau est juste sur une feuille pour servir de sauvegarde par un copier coller d'une partie d'un tableau sur une autre feuille vers celui ci, et qui doit conserver la mise en forme avec les groupages de lignes et le code couleur du tableau d'origine de plus je n'ai pas d'utilité de filtre.

La MFC de sylvanu me plaisait bien, surtout que la puissance des formules m’épate toujours, mais j'ai peur que plus le fichier va prendre de l’ampleur plus elle va être consommatrice de RAM sur l'utilisation du fichier.
Même constat pour une macro qui va reprendre à chaque fois le cadriage complet, sauf que là c'est en temps d’exécution de macro.

Donc pour l'instant je suis sur une solution macro qui a chaque copier coller dans le tableau ajoute les encadrements sur uniquement les parties qui viennent d’être collé.
Donc beaucoup moins de surface à traiter.

Vous pouvez bien entendu confirmer ou contredire ma réflexion.
 
Bonjour à tous

@treza88

Juste en passant et en survolant de très loin la question tu décris à priori ce que fait entre autre un TS .....

a chaque copier coller dans le tableau ajoute les encadrements sur uniquement les parties qui viennent d’être collé.

Et la partie collé peut se faire en manuel ou par VBA bien sur

..... J'ai fini de passer .... 🤣 🤣

Bonne soirée à tous
 
- 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
289
Réponses
5
Affichages
379
Retour