IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Remplissage automatique d'un tableau de synthèse de taille variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur acousticien
    Inscrit en
    Septembre 2015
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur acousticien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2015
    Messages : 122
    Par défaut Remplissage automatique d'un tableau de synthèse de taille variable
    Bonjour,

    Je souhaite construire un outil permettant, via le remplissage d'une base de données sur 2 onglets, de réaliser un tableau de synthèse (dans un troisième onglet) regroupant plusieurs paramètres, pour chaque élément - qui peuvent appartenir à des familles différentes (voir exemple ci-joint).

    J'ai très simplement réussi à extraire mes données des 2 premiers onglets et les répartir à ma sauce dans le troisième onglet lorsque le nombre d'éléments (et de familles) est fixe.

    Or je souhaite pouvoir ajouter/supprimer certains éléments de ma base de données et donc les informations qui leurs sont associés. Je voudrais que selon le nombre d'éléments dans une même famille, s'ajoutent ou se suppriment les informations correspondantes dans le tableau de synthèse.

    Cette étape pourrait se faire avec une macro, mais j'aurais alors besoin également de préciser quel est le contenu des nouvelles lignes/colonnes, or ce même contenu dépend du nombre d'éléments définis dans la base de donnée...

    Je ne sais pas trop comment m'en sortir, j'espère avoir exposé clairement mon problème.

    Merci d'avance pour vos propositions, je reste à votre disposition pour plus de détails concernant mon projet !

    exemple_forum.xlsm

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par flav_cm Voir le message
    Bonjour,

    Je ne sais pas trop comment m'en sortir.
    En abandonnant l'idée que l'on peut gérer des données avec Excel, ou en espérant qu'un bon samaritain qui n'est pas d'accord avec cela ouvre ton fichier-joint.

    http://www.developpez.net/forums/d84...s-discussions/

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur acousticien
    Inscrit en
    Septembre 2015
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur acousticien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2015
    Messages : 122
    Par défaut
    Bonjour clementmarcotte,

    Citation Envoyé par clementmarcotte Voir le message
    En abandonnant l'idée que l'on peut gérer des données avec Excel, ou en espérant qu'un bon samaritain qui n'est pas d'accord avec cela ouvre ton fichier-joint.
    Merci pour ta réponse, même si elle n'est pas très encourageante !

    Je ne désespère pas que quelqu'un ai une petite idée pour me permettre de créer de nouvelles cellules et d'y copier des formules dynamiques

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    Et bien pour nous eviter l'ouverture de ton fichier inutile. Fait un peu d'effort pour decrire le contenu de tes trois feuilles..comment est fait le lien entre entre les lignes de ta feuille 1 et 2.? Une colonne index? Que fait-on si une ligne n'existe que dans la feuille 1 et pas dans la feuille 2 ou vice versa. ?estimation du nombre de lignes max par feuilles?

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur acousticien
    Inscrit en
    Septembre 2015
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur acousticien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2015
    Messages : 122
    Par défaut
    Bonjour bbil et merci pour ta réponse.

    J'ai trouvé une manière de répondre à mes besoins, en passant successivement par plusieurs if.
    Même si c'est pas encore parfait et surement pas codé dans les règles de l'art, ça à l'air de fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    Sub RangementInformations()
     
    ' ********************************************** INITIALISATION des VARIABLES **********************************************
    f = 1
    base_donnees_2 = "2 - Composition des parois"
    base_donnees_2bis = "2bis - Autres informations"
    suivi_chantier = "3 - Suivi de chantier"
     
     
    ' ********************************************** PROGRAMME PRINCIPAL **********************************************
     
    With Sheets(base_donnees_2)
        For Each Cell In .Range(.Cells(7, 2), .Cells(7, 2).End(xlDown)).Cells
     
    ' ---------------------------------------- COMBLES AMENAGES ----------------------------------------
            If Cell.Value = "Combles aménagés" Then
                MsgBox "Combles aménagés dans cellule : " & Cell.Address
            End If
     
    ' ---------------------------------------- COMBLES PERDUS ----------------------------------------
            If Cell.Value = "Combles perdus" Then
                MsgBox "Combles perdus dans cellule : " & Cell.Address
            End If
     
     
    ' ---------------------------------------- MUR DE FACADE ----------------------------------------
            If Cell.Value = "Mur de façade" Then
     
                    MsgBox "Mur de façade " & Cell.Offset(0, 1).Value & " dans cellule : " & Cell.Address
                    Sheets(suivi_chantier).Select
     
                    If f <> 1 Then
                        Rows(3 + f * 7).Insert
                        Rows(3 + f * 7).Insert
                        Rows(3 + f * 7).Insert
                        Rows(3 + f * 7).Insert
                        Rows(3 + f * 7).Insert
                        Rows(3 + f * 7).Insert
                        Rows(3 + f * 7).Insert
                        Range(Cells(3 + f * 7, 4), Cells(3 + f * 7, 12)).Select
                        Selection.Copy
                        Cells(3 + f * 7, 4).Select
                        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                    End If
     
                    ' NOM de la paroi
                    Cells(4 + f * 7, 4) = Cell.Offset(0, 1)
     
                    ' LOCALISATION de la paroi
                    Cells(3 + f * 7, 6) = Cell.Offset(0, 2)
     
                    ' EXIGENCE acoustique
                    Cells(4 + f * 7, 5).Value = Cell.Offset(0, 14).Value
     
                    ' Composition et épaisseur du SUPPORT
                    If IsEmpty(Cell.Offset(0, 4)) Then
                        Cells(5 + f * 7, 5).Value = Cell.Offset(0, 3).Value
                    Else
                        Cells(5 + f * 7, 5).Value = Cell.Offset(0, 3).Value & Chr(10) & "Epaisseur = " & Cell.Offset(0, 4).Value & " cm"
                    End If
     
                    ' Type, localisation, référence et épaisseur de l'ISOLANT
                    If IsEmpty(Cell.Offset(0, 8)) Then
                        Cells(6 + f * 7, 5).Value = "Isolation " & Cell.Offset(0, 5).Value & ", " & Cell.Offset(0, 6).Value & " " & Cell.Offset(0, 7).Value
                    Else
                        Cells(6 + f * 7, 5).Value = "Isolation " & Cell.Offset(0, 5).Value & ", " & Cell.Offset(0, 6).Value & " " & Cell.Offset(0, 7).Value & Chr(10) & " Epaisseur = " & Cell.Offset(0, 8).Value & " cm"
                    End If
     
                    With Sheets(base_donnees_2bis)
                        For Each Cell2 In .Range(.Cells(6, 2), .Cells(6, 2).End(xlDown)).Cells
                        If Cell2.Value = "MF1" Then
                            Sheets(suivi_chantier).Select
     
                            ' Référence et exigence de la MENUISERIE
                            If Cell2.Offset(0, 1).Value = "Fenêtre" Then
                                Cells(7 + f * 7, 5).Value = Cell2.Offset(0, 2).Value & Chr(10) & " Rw+Ctr = " & Cell2.Offset(0, 3).Value & " dB"
                            End If
     
                            ' Référence et exigence de l'ENTREE D'AIR
                            If Cell2.Offset(0, 1).Value = "Entrée d'air" Then
                                Cells(8 + f * 7, 5).Value = Cell2.Offset(0, 2).Value & Chr(10) & " Dn,e,w+Ctr = " & Cell2.Offset(0, 4).Value & " dB"
                            End If
     
                            ' Référence et exigence du COFFRE DE VOLET ROULANT
                            If Cell2.Offset(0, 1).Value = "Coffre de volet roulant" Then
                                Cells(9 + f * 7, 5).Value = Cell2.Offset(0, 2).Value & Chr(10) & " Dn,e,w+Ctr = " & Cell2.Offset(0, 4).Value & " dB"
                            End If
     
                            End If
                        Next Cell2
                    End With
     
                    f = f + 1
     
     
            End If
     
    ' ---------------------------------------- AUTRE ----------------------------------------
            If Cell.Value = "Autre" Then
                MsgBox "Autre type de paroi dans cellule : " & Cell.Address
            End If
     
        Next Cell
    End With
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Remplissage automatique d'un tableau
    Par scoubi10 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/07/2013, 15h41
  2. [PDO] PDO requêtes paramétrées avec tableau de paramètres de taille variable
    Par disciplined dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/08/2012, 08h41
  3. [XL-2007] Remplissage automatique d'un tableau
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 27/07/2010, 15h22
  4. Réponses: 2
    Dernier message: 20/06/2009, 18h46
  5. [VBA-E] Form Excel VB, remplissage automatique d'un tableau
    Par evema dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/04/2007, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo