Base de données dans un tableau vers tableau d'une autre forme

MikaTI

XLDnaute Junior
Bonjour à tous,

Je bloque sur la création d'un fichier pour transférer des données d'un tableau "synthèse" d'un onglet, vers d'autres tableaux identiques dans un autre onglet.
Je m'explique, j'ai dans la 1ere feuille, un tableau de synthèse avec plusieurs colonne
J'ajoute des données et ça me fait un tableau avec un certains nombre de lignes... La première colonne, deux catégories sont possible (Accessoires ou Appareil)... (jusque là, rien de compliqué)
Les choses se compliquent ensuite...
Chaque ligne du tableau de synthèse, doit être reportée dans un tableau. (1 ligne = 1 petit tableau qui aura à chaque fois la forme et composition identique)
En fait certaines données de la ligne doivent être reportées dans ce nouveau tableau, qui vise tout simplement à apporter des détails... Et la colonne A qui indique la catégorie, doit déterminer si la ligne est transférée dans un tableau de la feuille 2 ou feuille 3... Et enfin chaque tableau des feuilles 2 ou 3 doivent se suivre tout en ayant un espace entre chaque tableau...

Je me demandais si par le biais d'une macro c'était possible? ou alors bidouiller avec une formule...?
Le tout serait de rendre simple l'utilisation de ce fichier, juste en remplissant la base de donnée qui va générer ensuite des petits tableaux dans les deux autres feuilles, et ainsi pouvoir remplir les cases restantes à remplir (non présentes dans le tableaux synthétique...)

Je vous remercie par avance, pour votre sympathie :)
Et bien entendu, si ça n'est pas clair, je peux éventuellement fournir un fichier anonymisé...

Merciiiii
 

MikaTI

XLDnaute Junior
Re : Base de données dans un tableau vers tableau d'une autre forme

Bonjour à tous,

Je bloque sur la création d'un fichier pour transférer des données d'un tableau "synthèse" d'un onglet, vers d'autres tableaux identiques dans un autre onglet.
Je m'explique, j'ai dans la 1ere feuille, un tableau de synthèse avec plusieurs colonne
J'ajoute des données et ça me fait un tableau avec un certains nombre de lignes... La première colonne, deux catégories sont possible (Accessoires ou Appareil)... (jusque là, rien de compliqué)
Les choses se compliquent ensuite...
Chaque ligne du tableau de synthèse, doit être reportée dans un tableau. (1 ligne = 1 petit tableau qui aura à chaque fois la forme et composition identique)
En fait certaines données de la ligne doivent être reportées dans ce nouveau tableau, qui vise tout simplement à apporter des détails... Et la colonne A qui indique la catégorie, doit déterminer si la ligne est transférée dans un tableau de la feuille 2 ou feuille 3... Et enfin chaque tableau des feuilles 2 ou 3 doivent se suivre tout en ayant un espace entre chaque tableau...

Je me demandais si par le biais d'une macro c'était possible? ou alors bidouiller avec une formule...?
Le tout serait de rendre simple l'utilisation de ce fichier, juste en remplissant la base de donnée qui va générer ensuite des petits tableaux dans les deux autres feuilles, et ainsi pouvoir remplir les cases restantes à remplir (non présentes dans le tableaux synthétique...)

Je vous remercie par avance, pour votre sympathie :)
Et bien entendu, si ça n'est pas clair, je peux éventuellement fournir un fichier anonymisé...

Merciiiii

Merci voici le fichier... Désolé si c'est trop compliqué ...

Merci
 

Pièces jointes

  • Test verif.xlsx
    21.3 KB · Affichages: 51
  • Test verif.xlsx
    21.3 KB · Affichages: 48

MikaTI

XLDnaute Junior
Re : Base de données dans un tableau vers tableau d'une autre forme

Bonjour

J'avais posté mon fichier dans une réponse de mon commentaire, du coup je ne sais pas si vous aviez vu le post avec le fichier.
Ici le voici :)

Merci
 

Pièces jointes

  • Test verif.xlsx
    21.3 KB · Affichages: 46
  • Test verif.xlsx
    21.3 KB · Affichages: 56

DoubleZero

XLDnaute Barbatruc
Re : Base de données dans un tableau vers tableau d'une autre forme

Bonjour, MikaTI, Iznogood1, le Forum,

Pour la rubrique "APPAREIL", je n’ai pas su reproduire la numérotation souhaitée.

Une suggestion, malgré tout, en pièce jointe.

A bientôt :)
 

Pièces jointes

  • 00 - MikaTI - Tableaux générer.xlsm
    54.3 KB · Affichages: 49

klin89

XLDnaute Accro
Re : Base de données dans un tableau vers tableau d'une autre forme

Bonjour MikaTI, DoubleZero, Iznogood1, le forum :)

Pour la feuille Accessoire, une macro de ce genre.
Restitution en feuille 1.
Pour la feuille Appareil, c'est pratiquement la même macro, je te laisse faire.
VB:
Option Explicit

Sub test()
Dim a, b(), i As Long, n As Long
    Application.ScreenUpdating = False
    Sheets("Feuil1").Cells.Clear
    a = Sheets("SYNTHESE").Range("A4").CurrentRegion.Value
    n = 6
    For i = 2 To UBound(a, 1)
        If a(i, 1) = "Accessoire" Then
            ReDim b(1 To 4, 1 To 4)
            b(1, 1) = a(1, 2): b(1, 2) = a(i, 2): b(1, 3) = "Réglementation :"
            b(2, 1) = a(1, 4): b(2, 2) = a(i, 4): b(2, 3) = "Périodicité règlementaire (mois) :"
            b(3, 1) = "CMU :": b(3, 3) = "Lieu :"
            b(4, 1) = "Caractéristiques :"
            With Sheets("Feuil1")
                With .Cells(n, 1).Resize(UBound(b, 1), UBound(b, 2))
                    .Value = b
                    .Borders.Weight = 2
                    .Rows(4).Offset(, 1).Resize(, 3).MergeCells = True
                End With
                n = n + 5
            End With
        End If
    Next
    'restitution et mise en forme
    With Sheets("Feuil1")
        With .UsedRange
            .VerticalAlignment = xlCenter
            .Font.Name = "Calibri"
            .Font.Size = 10
            .Columns("a:d").ColumnWidth = Array(17, 12, 30, 20)
        End With
        With .Cells(4, 1)
            .Font.Size = 11
            .Interior.ColorIndex = 42
            .Resize(, 4).MergeCells = True
            .Value = "ACCESSOIRES"
        End With
    End With
    Application.ScreenUpdating = True
End Sub
klin89
 

MikaTI

XLDnaute Junior
Re : Base de données dans un tableau vers tableau d'une autre forme

Bonjour, MikaTI, Iznogood1, le Forum,

Pour la rubrique "APPAREIL", je n’ai pas su reproduire la numérotation souhaitée.

Une suggestion, malgré tout, en pièce jointe.

A bientôt :)


Bien le bonjour,

Sincèrement, ça répond exactement à mes attentes ^^ merci.

Par contre, j'ai un petit soucis à l'utilisation.

J'ouvre le fichier,
j'efface les données de mon tableau de synthèse pour repartir sur un nouveau tableau vierge, et j'inscris deux nouvelles données (avec toujours les deux même type de catégories)... et quand je clique pour exécuter le module, dans l'onglet appareil, j'ai des bordures qui sont apparues dans la plage K2-L9.

Il n'y pourtant pas de mise en forme conditionnelle... bizarre.
 

MikaTI

XLDnaute Junior
Re : Base de données dans un tableau vers tableau d'une autre forme

Bonjour MikaTI, DoubleZero, Iznogood1, le forum :)

Pour la feuille Accessoire, une macro de ce genre.
Restitution en feuille 1.
Pour la feuille Appareil, c'est pratiquement la même macro, je te laisse faire.

Bonjour

C'est aussi une très bonne piste, je vais essayer d’adapter le code pour l'onglet appareil (je ne maîtrise pas encore très bien le VBA) mais ça n'a pas l'air très compliqué.

Je vous tiens au courant :)

Merci merci
 
Dernière édition:

klin89

XLDnaute Accro
Re : Base de données dans un tableau vers tableau d'une autre forme

Re MikaTI,:)

Ma compréhension :

La feuille Synthese est le tableau source.
Pour chaque ligne de ce tableau, tu crées un petit tableau dans une feuille de restitution.
Petit tableau que tu peux éventuellement compléter manuellement.
Dans la feuille source, l'ajout de nouveaux enregistrements doit générer autant de nouveaux tableaux sans effacer les tableaux originaux de la feuille de restitution

Dans ce cas, j'ai utilisé un dictionnaire pour tester l'existence des tableaux dans la feuille de restitution.
A tester :
VB:
Option Explicit

Sub test()
Dim myAreas As Areas, myArea As Range, dico As Object
Dim a, i As Long, n As Long
    Set dico = CreateObject("Scripting.Dictionary")
    dico.CompareMode = 1
    Application.ScreenUpdating = False
    With Sheets("Feuil1")    'la feuille ACCESSOIRE ds ton exemple
        n = .Range("a" & Rows.Count).End(xlUp).Row
        If n > 1 Then
            With .Range("b6", .Range("b" & Rows.Count).End(xlUp))
                On Error Resume Next
                Set myAreas = .SpecialCells(2).Areas
                On Error GoTo 0
            End With
            If Not myAreas Is Nothing Then
                'On determine les cles du dictionnaire
                'soit le N°Interne si j'ai bien compris
                For Each myArea In myAreas
                    dico(myArea(2).Value) = Empty
                Next
            End If
        End If
        a = Sheets("SYNTHESE").Range("A4").CurrentRegion.Value
        If n = 1 Then n = 6 Else n = n + 2
        For i = 2 To UBound(a, 1)
            If a(i, 1) = "Accessoire" Then
                'si le n°interne n'existe pas ds la feuille synthese
                If Not dico.exists(a(i, 4)) Then
                    'On genere un nouveau petit tableau de 4 x 4
                    ReDim b(1 To 4, 1 To 4)
                    b(1, 1) = a(1, 2): b(1, 2) = a(i, 2): b(1, 3) = "Réglementation :"
                    b(2, 1) = a(1, 4): b(2, 2) = a(i, 4): b(2, 3) = "Périodicité règlementaire (mois) :"
                    b(3, 1) = "CMU :": b(3, 3) = "Lieu :"
                    b(4, 1) = "Caractéristiques :"
                    'Restitution et mise en forme du tableau
                    With .Cells(n, 1).Resize(UBound(b, 1), UBound(b, 2))
                        .Value = b
                        .Borders.Weight = 2
                        .Rows(4).Offset(, 1).Resize(, 3).MergeCells = True
                    End With
                    n = n + 5
                End If
            End If
        Next
        Set dico = Nothing
        With .UsedRange
            .VerticalAlignment = xlCenter
            .Font.Name = "Calibri"
            .Font.Size = 10
            .Columns("a:d").ColumnWidth = Array(17, 12, 30, 20)
        End With
        With .Cells(4, 1)
            .Font.Size = 11
            .Interior.ColorIndex = 42
            .Resize(, 4).MergeCells = True
            .Value = "ACCESSOIRES"
        End With
    End With
    Application.ScreenUpdating = True
End Sub
klin89
 
Dernière édition:

MikaTI

XLDnaute Junior
Re : Base de données dans un tableau vers tableau d'une autre forme

Re MikaTI,:)

Ma compréhension :

La feuille Synthese est le tableau source.
Pour chaque ligne de ce tableau, tu crées un petit tableau dans une feuille de restitution.
Petit tableau que tu peux éventuellement compléter manuellement.
Dans la feuille source, l'ajout de nouveaux enregistrements doit générer autant de nouveaux tableaux sans effacer les tableaux originaux de la feuille de restitution

Dans ce cas, j'ai utilisé un dictionnaire pour tester l'existence des tableaux dans la feuille de restitution.

Bonjour

Merci pour ce nouveau code...
En fait je n'arrive pas à comprendre la différence avec le premier envoyé... ?
Et aussi sur ce nouveau code, lorsque j'exécute la macro une première fois, ok le tableau est bien généré dans le bon onglet, mais lorsque j'apporte une modification dans l'onglet sythèse "source), et lorsque je lance la macro, rien ne se passe, pas de modification dans les tableaux déjà générés... avec le premier code envoyé, je n'ai pas ce soucis.

Quel est la différence entre les deux?

Merci :)
 
Dernière édition:

MikaTI

XLDnaute Junior
Re : Base de données dans un tableau vers tableau d'une autre forme

Re MikaTI,:)

Ma compréhension :

La feuille Synthese est le tableau source.
Pour chaque ligne de ce tableau, tu crées un petit tableau dans une feuille de restitution.
Petit tableau que tu peux éventuellement compléter manuellement.
Dans la feuille source, l'ajout de nouveaux enregistrements doit générer autant de nouveaux tableaux sans effacer les tableaux originaux de la feuille de restitution

Dans ce cas, j'ai utilisé un dictionnaire pour tester l'existence des tableaux dans la feuille de restitution.


Je crois que je viens de comprendre ^^ suivant ta compréhension
Ma compréhension :

La feuille Synthese est le tableau source. Oui ok
Pour chaque ligne de ce tableau, tu crées un petit tableau dans une feuille de restitution. oui ok
Petit tableau que tu peux éventuellement compléter manuellement. oui ok
Dans la feuille source, l'ajout de nouveaux enregistrements doit générer autant de nouveaux tableaux sans effacer les tableaux originaux de la feuille de restitution En fait la modification dans le tableau apporte la modification dans les tableaux générés... Par exemple si dans ligne 1 du tableau je modifie le nom de la désignation, la désignation du tableau généré doit aussi être modifié... Mais quand j'apporte des modifications dans le tableau sources, et que j'ai déjà remplis des cellules manuellement dans le tableau généré (ex: marque, CMU etc...) si c'est possible, ces cellules que l'ont peut remplir manuellement doivent rester remplies...
 
Dernière édition:

klin89

XLDnaute Accro
Re : Base de données dans un tableau vers tableau d'une autre forme

Re MikaTI,

Dans un premier temps, peux-tu supprimer dans les posts #8 #10 et #11, la réédition de mes codes, c'est inutile cela encombre le fil qui en devient illisible.

Sinon tu te compliques vraiment la vie, une simple base de données avec tous les renseignements souhaités que tu modifierais à ta guise ferait l'affaire.
Dans ton cas, tu modifies à la fois la feuille source et la feuille cible, on ne sait même plus ce qu'il faut générer/garder suite aux différentes modifications de ces 2 feuilles.

J'appelle cela du bidouillage.:p
Sur ce, j'arrête.

klin89
 

MikaTI

XLDnaute Junior
Re : Base de données dans un tableau vers tableau d'une autre forme

Re MikaTI,

Dans un premier temps, peux-tu supprimer dans les posts #8 #10 et #11, la réédition de mes codes, c'est inutile cela encombre le fil qui en devient illisible.

Sinon tu te compliques vraiment la vie, une simple base de données avec tous les renseignements souhaités que tu modifierais à ta guise ferait l'affaire.
Dans ton cas, tu modifies à la fois la feuille source et la feuille cible, on ne sait même plus ce qu'il faut générer/garder suite aux différentes modifications de ces 2 feuilles.

J'appelle cela du bidouillage.:p
Sur ce, j'arrête.

klin89

Voilà c'est fait.

En effet une base de donnée serait nettement plus simple, mais j'ai besoin que la présentation soit faite comme dans le fichier...
Avec ton code j'ai réussi à faire ce que je voulais, super! J'arrive à générer tous les tableaux pour les deux catégories, donc merci bien :)

Je dois juste maintenant travailler la mise en page finale, car des ces tableaux générés dans les deux onglets, je dois sortir une impression... Donc je travaille dessus et je posterai une nouvelle discussion si besoin ^^

Merci bien en tout cas, ça m'a été très utile!
 

Discussions similaires