Microsoft 365 Transformation BDD en tableau à partir de VBA

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 !

Demasc

XLDnaute Nouveau
Bonjour à tous,

Après une bonne matinée de recherche, je bute pour trouver un programme VBA qui me permettrait de transformer les BDD que j'importe sur mon fichier Excel en tableau.
3 points spécifiques à ces BDD :
  • Certaines colonnes peuvent comporter des cellules vides.
  • Le nombre de lignes est variable.
  • La première ligne représentera toujours l'en-tête.
Est-ce que vous auriez une idée ?
 
Solution
Vous pouvez modifier comme suit :
VB:
DL = Range("K65500").End(xlUp).Row
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$K$" & DL), , xlYes).Name = "Tableau1"
DL calcule la dernière ligne utilisée.
Il faut prendre la colonne où tout est rempli, j'ai opté pour la colonne K.
Dans votre fichier, on a :
DL=21450, et donc le Range("$A$1:$K$" & DL) vaut Range("$A$1:$K$21450")
Bonjour Demasc et bienvenu sur XLD,
Auriez vous un petit fichier test anonyme ?
Uniquement une dizaine de ligne de la BDD, et la structure du tableau désiré.
Ce serait infiniment plus simple pour répondre, et pas en dehors de la plaque.
 
Plus clairement :
Sub Macro2()
' Mise sous forme de tableau
Application.CutCopyMode = False
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$K$21450"), , xlYes).Name _
= "Tableau1"
Range("Tableau1[#All]").Select
ActiveSheet.ListObjects("Tableau1").TableStyle = "TableStyleLight1"
End Sub
Lorsque j'enregistre ma macro et effectue la mise sous forme de tableau (Onglet "Accueil" --> "Mettre sous forme de tableau") j'obtiens le programme ci-joint. Le problème étant que j'ai dans ce programme Range("$A$1:$K$21450"). Ors j'aimerais que la Range soit variable car la taille des colonnes et lignes serait amené à changer.
 
Vous pouvez modifier comme suit :
VB:
DL = Range("K65500").End(xlUp).Row
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$K$" & DL), , xlYes).Name = "Tableau1"
DL calcule la dernière ligne utilisée.
Il faut prendre la colonne où tout est rempli, j'ai opté pour la colonne K.
Dans votre fichier, on a :
DL=21450, et donc le Range("$A$1:$K$" & DL) vaut Range("$A$1:$K$21450")
 
Petite variante si vous n'êtes pas sur du nombre de colonnes :
VB:
Set Plage = [A1].CurrentRegion
ActiveSheet.ListObjects.Add(xlSrcRange, Plage, , xlYes).Name = "Tableau1"
CurrentRegion prend toute la plage jusqu'à la dernière ligne et la dernière colonne.
 
- 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

Retour