Microsoft 365 Tableau

jaclam

XLDnaute Nouveau
Bonjour

Je ne crois pas avoir vu cette question déjà traitée (du moins selon mes recherches).
J'ai créé un tableau Excel (v. Microsoft 365) à partir d'une plage de données. Dans les cellules dune ligne, j'ai des dates, des sigles sous forme de liste déroulante, des nombres et des formules de calcul.
J'ai renseigné les différentes lignes jusqu'à la ligne 37. Chaque nouvelle ligne renseignée reprenait les formats et les formules de la précédente ligne, ce qui fait la beauté de cet instrument qu'est le tableau. La couleur de ligne du tableau était également reprise (alternativement gris et couleur).
Arrivé à la ligne 38, impossible de retrouver ni les formats dates (exprimées en nombre), ni la couleur de la ligne, ni les formules de la précédente ligne, ni même la liste déroulante. Pourtant, quand mon curseur est positionné sur une des cellules de la ligne 38, je vois que je suis bien dans le tableau ( "Création de tableau" apparaît bien dans le menu principal.
J'ai essayé diverses solutions comme par exemple modifier dans le gestionnaire de noms la dernière ligne du tableau : 38 au lieu de 37(j'avais lu cela ailleurs) mais rien n'y fait.
J'espère avoir été clair.
Votre aide serait la bienvenue.
Merci beaucoup et bonne journée.
Jean-Claude
 

job75

XLDnaute Barbatruc
Bonjour jaclam, le forum,

Si vous craignez de vous tromper vous pouvez exécuter cette macro pour faire le travail :
VB:
Sub MAJ_Tableau()
Dim P As Range, tablo
Application.ScreenUpdating = False
With Sheets("Suivi compte")
    Set P = .ListObjects(1).Range 'tableau structuré
    tablo = P 'mémorise les valeurs
    .Cells.Clear 'efface toute la feuille
    P = tablo 'restitue les valeurs
    With .ListObjects.Add(xlSrcRange, P, , xlYes) 'recrée le tableau structuré
        .TableStyle = "TableStyleMedium8"
        With .Range.Rows(2).Resize(.ListRows.Count)
            .Columns(1).Validation.Add xlValidateList, Formula1:="=INDIRECT(""Symboles"")"
            .Columns(7).Validation.Add xlValidateList, Formula1:="A,V"
            .Columns(10).FormulaR1C1 = "=IF(RC[-2]<>"""",RC[-2]+N(R[-1]C),"""")"
            Union(.Columns(8), .Columns(10)).NumberFormat = "0.00;[Red]-0.00"
        End With
    End With
    Union(P.Columns(3).Resize(, 2), P.Columns(7)).HorizontalAlignment = xlCenter
    P.Columns.AutoFit 'ajustement largeurs
    With .UsedRange: End With 'actualise les barres de défilement
End With
End Sub
Grâce à With .UsedRange: End With la Dernière cellule est maintenant J37.

A+
 

Pièces jointes

  • 00-Suivi.xlsm
    30 KB · Affichages: 2
Dernière édition:

jaclam

XLDnaute Nouveau
Bonjour et merci à vous @job75 , @TooFatBoy et @Phébus
J'ai téléchargé la correction et je vais tester. Par contre j'avoue que je n'ai pas compris tout votre échange sur les lignes et colonnes vides (?)
D'autre part @job75 tu dis "Le tableau structuré Tableau2 était mal construit"? Bizarre car pour le faire j'ai juste cliqué sur "Mettre en forme de tableau". Tu a une idée sur ce qui a pu se produire ?
Merci encore pour votre aide précieuse
 

job75

XLDnaute Barbatruc
Je viens de modifier un peu la macro du post #18.

Et celle-ci fonctionne même si le tableau d'origine n'est pas structuré :
VB:
Sub MAJ_Tableau()
Dim P As Range, tablo
Application.ScreenUpdating = False
With Sheets("Suivi compte")
    Set P = .[A1].CurrentRegion
    If P.Rows.Count = 1 Then Set P = P.Resize(2)
    tablo = P 'mémorise les valeurs
    .Cells.Clear 'efface toute la feuille
    P = tablo 'restitue les valeurs
    With .ListObjects.Add(xlSrcRange, P, , xlYes) 'recrée le tableau structuré
        .TableStyle = "TableStyleMedium8"
        With .Range.Rows(2).Resize(.ListRows.Count)
            .Columns(1).Validation.Add xlValidateList, Formula1:="=INDIRECT(""Symboles"")"
            .Columns(7).Validation.Add xlValidateList, Formula1:="A,V"
            .Columns(10).FormulaR1C1 = "=IF(RC[-2]<>"""",RC[-2]+N(R[-1]C),"""")"
            Union(.Columns(8), .Columns(10)).NumberFormat = "0.00;[Red]-0.00"
        End With
    End With
    Union(P.Columns(3).Resize(, 2), P.Columns(7)).HorizontalAlignment = xlCenter
    P.Columns.AutoFit 'ajustement largeurs
    With .UsedRange: End With 'actualise les barres de défilement
End With
End Sub
 

Pièces jointes

  • 00-Suivi.xlsm
    30.2 KB · Affichages: 2

jaclam

XLDnaute Nouveau
Bonjour à tous.
Merci @job75 pour cette nouvelle macro.
  • j'ai continué à remplir le TS et 'est impeccable !
  • j'ai déjà testé la première macro avec succès. Quelle est la nouveauté ? Et cette macro me servirait en cas de problème quelque soit le nombre de lignes remplies ?
  • maintenant, j'ai peur de faire une quelconque modif : je voudrai intervenir sur les formats de nombres de certaines colonnes : puis-je le faire sans risque ou est-il mieux d'inclure des lignes complémentaires dans ta macro 'sur le modèle de la tienne : Union(.Columns(8), .Columns(10)).NumberFormat = "0.00;[Red]-0.00") ?
Merci encore à vous tous pour votre aide.
Bonne fin de WE.
Jean-Claude
 

job75

XLDnaute Barbatruc
Les 2 macros recréent le tableau quel que soit le nombre de lignes du tableau d'origine.

Vous pouvez en effet formater la colonne B en ajoutant :
VB:
           .Columns(2).NumberFormat = "0.00"
Pour les colonnes E et F je vous conseille de ne pas y toucher puisque le nombre de décimales varie de 1 à 5, le format Standard convient très bien.
 

Pièces jointes

  • 00-Suivi.xlsm
    30.4 KB · Affichages: 2

TooFatBoy

XLDnaute Barbatruc
Par contre j'avoue que je n'ai pas compris tout votre échange sur les lignes et colonnes vides (?)
Je disais que si tu utilises la combinaison de touches <Ctrl>+<Fin> tu vois que la "plage utilisée" comprend deux colonnes à droite du TS et trois lignes en dessous.

Ce n'est pas grave en soi, c'est juste que ça fait un fichier un tout petit peu plus gros pour rien. 😉
 

TooFatBoy

XLDnaute Barbatruc
D'autre part @job75 tu dis "Le tableau structuré Tableau2 était mal construit"? Bizarre car pour le faire j'ai juste cliqué sur "Mettre en forme de tableau".
Et moi j'ai dit :
Pour moi, c'est juste le TS qui a été mal construit, mais ça se répart. 😉
C'est pour ça que j'ai proposé en #8 ton TS corrigé (mise en forme et formule).



Tu a une idée sur ce qui a pu se produire ?
Souvent quand tu crées le TS après avoir intégré les formules et fait les mises en forme, lors de l'ajout de lignes il y a des soucis.
Du coup tu refais tout, colonne par colonne au niveau des données du TS et c'est bon.

D'ailleurs, tu vois que les formules n'ont plus du tout le même aspect, puisqu'elles utilisent le fait qu'elles sont dans un TS.
 

jaclam

XLDnaute Nouveau
Bonjour
Les 2 macros recréent le tableau quel que soit le nombre de lignes du tableau d'origine.

Vous pouvez en effet formater la colonne B en ajoutant :
VB:
           .Columns(2).NumberFormat = "0.00"
Pour les colonnes E et F je vous conseille de ne pas y toucher puisque le nombre de décimales varie de 1 à 5, le format Standard convient très bien.
Merci pour la macro corrigée

=================
C'est pour ça que j'ai proposé en #8 ton TS corrigé (mise en forme et formule).
......
D'ailleurs, tu vois que les formules n'ont plus du tout le même aspect, puisqu'elles utilisent le fait qu'elles sont dans un TS.
Oui j'ai vu le changement des formules sur la forme. Merci.

Merci à vous et bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
314 121
Messages
2 106 128
Membres
109 495
dernier inscrit
jerome bonneau