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 de cellules selon table de paramètres [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Points : 71
    Points
    71
    Par défaut Remplissage automatique de cellules selon table de paramètres
    Bonjour à tous,

    J'ai besoin d'aide sur Excel 2016 dernière version.

    J'ai réalisé plusieurs recherches pour mon problème sur ce forum et sur d'autres mais je ne suis pas parvenu à trouver quelque chose de pertinent. Pourtant, je suis certains que pour des as de la macro ça doit être quelque chose de super simple.

    En pièce jointe vous trouverez mon fichier de travail que j'ai simplifié pour des raisons de confidentialité.

    Je vous explique :
    Dans mon onglet EC1, j'ai une nomenclature qui me permet de déterminer le coût d'un produit.
    La colonne C me permet de dire quel sous-ensemble est présent.
    Lorsque le sous-ensemble est présent, il y a un 1 dans la dernière ligne du sous-ensemble, les composants reprennent l'état de la présence de cette dernière ligne.

    Selon le produit je dois pouvoir régler par 1 ou 0 si l'élément est présent.

    Ce que je souhaite, c'est que ces 1 et 0 (uniquement sur la dernière ligne des sous-ensembles, soit modifié selon le produit que je choisi en C9.

    Il faudrait donc que quand j'ai sélectionné le produit dans ma liste déroulante, les 0 et 1 se mette à jour selon ce qui est paramétré dans l'onglet grille composition.
    Ca me permet "d'appeler" la composition standard, puis de la modifier au besoin.

    Je précise que j'ai plus de 300 lignes, une trentaine de sous-ensembles et une 15aine de produits.

    Ca ne me pose pas de problème d'avoir une macro active ou passive qui se déclenche après la sélection du produit pour tout mettre à jour.

    A noter que je me serai satisfait d'une formule recherveV + Equiv mais je n'y parviens pas à cause des cellule fusionnées et je n'ai pas trouvé sur internet pour ça.

    Voilà, Merci à tous
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Bonjour
    Sans télécharger votre fichier joint ni bien comprendre la demandé j'ai téléchargé un jour un fichier qui peut être rassemble ou presque à ta demande
    Par l'effet de l'oubli (étant un vieux à cheveux blanc ) Je m'excuse de ne pas citer le nom du monsieur qui a développé ce bon travail et à qui je passe un bonjour
    Conception : un onglet pour les produits
    un onglet pour la composition de chaque produit (Code produit / matière consommée / quantité)
    et un dernier onglet pour les prix unitaire de chaque matière consommée
    Tu clic sur un userform et tu fais le choix du produit et tu aura le coût total ainsi que le coût du matière le plus onéreux
    Je joins le code commenté et le fichier en espérant qu'il te permet d'avancer ou aider ; peut être, un autre passager
    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
    '--- Déclaration des variables
    Dim fProd As Worksheet, fMat As Worksheet, fPrix As Worksheet
    Dim lProd As Long, lMat As Long, lPrix As Long
    Dim dProd As Object, dMat As Object, dPrix As Object, dPrixU As Object
    Dim tMat()
    Private Sub UserForm_Initialize()
    '--- On définit les variables
    Set fProd = Feuil1: Set fMat = Feuil2: Set fPrix = Feuil3
    lProd = fProd.[a65000].End(xlUp).Row: lMat = fMat.[a65000].End(xlUp).Row: lPrix = fPrix.[a65000].End(xlUp).Row:
    Set dProd = CreateObject("Scripting.Dictionary"): Set dMat = CreateObject("Scripting.Dictionary")
    Set dPrix = CreateObject("Scripting.Dictionary"): Set dPrixU = CreateObject("Scripting.Dictionary")
    With fMat: tMat = fMat.Range(.Cells(2, 1), .Cells(lMat, 3)).Value: End With
    '--- On charge les dictionary 1 et 3
    For Each Cell In fProd.Range("a2:a" & lProd): dProd(Cell.Value) = Cell.Offset(, 1).Value: Next Cell
    For Each Cell In fPrix.Range("a2:a" & lPrix): dPrix(Cell.Value) = Cell.Offset(, 2).Value: Next Cell
    '--- On enregistre les valeurs de la combobox
    Me.ComboBox1.List = dProd.Keys
    End Sub
    Private Sub ComboBox1_Change()
    '--- On enregistre le code produit
    If IsNumeric(Me.ComboBox1.Value) Then code = CLng(Me.ComboBox1.Value) Else: code = Me.ComboBox1.Value
    '--- On modifie la valeur du Label
    tbLabel = dProd(code)
    '--- On calcule le prix unitaire
    '- On enregistre les CodeMatPrem et Qu
    For i = LBound(tMat) To UBound(tMat)
        If tMat(i, 1) = code Then
            dMat(tMat(i, 2)) = tMat(i, 3)
        End If
    Next i
    '- On boucle
    For Each d In dMat.Keys
        dPrixU(d) = dMat(d) * dPrix(d)
    Next d
    '- On modifie la valeur du prix
    tbPrix = Application.Sum(dPrixU.Items)
    '--- On modifie la valeur du complément le plus onéreux
    tbOnereux = Application.Max(dPrixU.Items)
    '--- On vide les dictionary
    dMat.RemoveAll
    dPrixU.RemoveAll
    End Sub
    Fichiers attachés Fichiers attachés
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  3. #3
    Membre régulier
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Points : 71
    Points
    71
    Par défaut
    Bonjour Bennasr,

    Merci de votre contribution et du partage de ce document.

    Effectivement il peut présenter un intérêt pour moi, mais pas dans le cadre du problème du topic

    Enj fait ce que je souhaite, c'est à partir d'une simple liste en validation des données, modifié des cellules d'un onglet à l'identique (même numéro de ligne) que celles d'un autre autre onglet.

    Donc je choisis la voiture A, et dans ma grille de composition j'ai la voiture A composé de ça ça et ça, et paf je récupère ces données.

    Mon besoin me semble beaucoup plus simple que le travail qui a été fait sur votre fichier ^^'

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    A noter que je me serai satisfait d'une formule recherveV + Equiv mais je n'y parviens pas à cause des cellule fusionnées et je n'ai pas trouvé sur internet pour ça.
    Les cellules fusionnées sont à proscrire dans des tables de données.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre régulier
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Points : 71
    Points
    71
    Par défaut
    Bonjour Philippe,

    Oui je sais bien, c'est pas la première fois que je suis géné par des cellules fusionnées

    Mais là je n'ai pas le choix, par ce que l'onglet sur lequel elles sont n'est justement une base de données, c'est l'onglet qui l'exploit et qui est à disposition d'utilisateurs moins aguéris aux fichiers Excel

    Donc je dois aussi soigner la mise en forme.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Mais là je n'ai pas le choix, par ce que l'onglet sur lequel elles sont n'est justement une base de données, c'est l'onglet qui l'exploit et qui est à disposition d'utilisateurs moins aguéris aux fichiers Excel
    Pour une gestion efficace et perenne, il est important que la base de données (la ou les listes de données) soient correctement organisées sinon on construit des usines à gaz et puis un jour tout s'écroule.
    C'est comme construire une maison sur de mauvaises fondations.

    Je ne vois pas ce que le fait d'avoir des cellules fusionnées dans une liste de données améliorent l'utilisation de celle-ci par des utilisateurs même si ceux ci sont fort peu aguértt. C'est avoir fort peu de considération des collègues ou collaborateurs.

    80% des utilisateurs d'excel connaissent 2% de ses possibilités et lorsque l'on demande à ceux-ci d'utiliser des données ont leus donnent un minimum d'explications ou de formations
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre régulier
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Points : 71
    Points
    71
    Par défaut
    Je note vos conseils mais malheureusement, dans ce cas, elles ne sont pas applicables

    Le fichier est destiné à des personnes à qui j'ai appris ce qu'était les notions de copier coller, d'emplacement de fichiers dans des dossiers.

    Je dois donc leur simplifier au maximum l'utilisation de mon fichier.

    Si vous avez une aide à apporter à mon problème ce serait grandement apprécié, plus que des jugements à mon encontre

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si vous avez une aide à apporter à mon problème ce serait grandement apprécié, plus que des jugements à mon encontre
    D'abord, le but n'était pas de juger et si vous l'avez pris comme cela j'en suis désolé.
    Je n'ai pas de problème d'aider qui que ce soit mais j'ai décidé depuis longtemps que je n'apporte plus mon aide aux personnes qui persistent à continuer à travailler autrement que suivant certaines règles.
    Je ne souhaite donc pas écrire des lignes de code inutiles qui serait des sparadraps. J'ai autre chose à faire de mon temps.

    Je suis convaincu que retravailler vos données ne devrait pas être compliqué et ne pénaliserait les utilisateurs mais je vous laisse seul juge.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Remplissage automatique si cellule vide
    Par Fab75018 dans le forum Excel
    Réponses: 1
    Dernier message: 15/05/2013, 11h14
  2. Remplissage automatique de cellules
    Par nico93100 dans le forum Excel
    Réponses: 3
    Dernier message: 07/11/2010, 10h27
  3. [XL-2007] remplissage automatique de cellules (Bug range) Debutant
    Par isfet dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 31/05/2010, 10h43
  4. remplissage automatique de cellule
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/02/2009, 19h33
  5. Remplissage automatique de cellules Excel à partir d'une liste
    Par Gullivert dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/08/2006, 17h48

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