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 :

Macro pour remplissage auto avec choix multiple [XL-97]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Par défaut Macro pour remplissage auto avec choix multiple
    Bonjour à toutes et à tous,

    J'ai un problème sur Excel, ou plutôt sur la création d'une macro. Ce problème m’animant depuis déjà deux semaines et après avoir fait le tour de différents forums et autres sites d'entraides pour trouver une solution, je me permets de me tourner vers vous pour m'aider à trouver solution à mon problème.

    La problématique est la suivante :
    Dans un fichier contenant 47 colonnes et un nombre très important de lignes (Aujourd'hui plus de 100, mais demain sans doute beaucoup plus), je dois par le biais de choix multiple remplir automatiquement certaine colonne.
    Dans un but de clarté, je vais donner un petit exemple avec 2 feuilles et 3 colonnes
    Feuille 1
    Colonne A -- Colonne B -- Colonne C
    A -------------- B
    B -------------- C

    Feuille 2
    Colonne A -- Colonne B -- Colonne C
    A ------------- B --------- 30
    B ------------- C --------- 12
    A ------------- C --------- 34

    Explication :
    La feuille 2 est ma feuille de « Configuration possible ». Elle est renseignée à la main avec toutes les configurations possibles du couple Colonne A / Colonne B. La Colonne C elle dépend des deux premières, mais est un paramètre fixé par l’utilisateur (Moi). Afin d’éviter des erreurs, il ne doit pas y avoir de doublon dans la Feuille 2 (Imaginez deux valeurs différentes dans la colonne C pour un même couple Colonne A / Colonne B). Les colonnes A et B ne sont pas nécessairement rangées dans un ordre précis, mais plutôt au fur et à mesure du besoin. Un couple colonne A / colonne B est indissociable et a toujours une valeur de Colonne C correspondante. Les valeurs de Colonne C n’ont pas de logique avec les deux autres paramètres (sinon ça serait trop facile). Je dois pouvoir rajouter des lignes à ma guise sans avoir à modifier ma macro

    La feuille 1 est ma feuille de travail. Les colonnes A et B sont renseignées manuellement (ou par le biais d’une liste déroulante ce qui serait plus pratique). La colonne C quant à elle doit se renseigner automatiquement en fonction de ce que j’ai renseigné en colonne A et en colonne B. Les valeurs sont définies dans la feuille 2 (C’est à ca qu’elle sert). Ici aussi je dois pouvoir ajouter des lignes et même rajouter des lignes non affectée par la macro (Ligne de titre par exemple pour différents blocs).

    Pour faire une analogie avec une formule sous excel, ce serais une cascade de fonction si() mais si ma feuille 2 comporte 100 lignes, il me faut 100 fonctions si() imbriquées, ce qui n’est pas gérable.

    J’espère avoir été claire et que vous avez compris ma demande. Si ce n’est pas le cas, n’hésitez pas à me contacter, je tenterais d’être plus clair et je pourrais même vous faire parvenir un fichier exemple (pas dans le post, c’est interdit à l’ouverture d’une nouvelle discussion).

    Merci de venir à mon secours,

    Cordialement,
    Sniper22ch206

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 46
    Par défaut
    2 solutions selon moi:
    • Créer une macro bourine à mettre dans l'évènement Worksheet_Change qui va parcourir ta feuille 2 jusqu'à trouver le bon couple
    • Ajouter une colonne dans ta 2ème feuille entre la B et la C qui concatène les 2 premières (avec un caractère exotique du type "@" entre) et faire un RECHERCHEV dans ta feuille 1 sur la même concaténation des colonnes

    Perso, la 2ème paraît plus rapide.
    Pour la concaténation, il faut un truc du genre:
    à dérouler dans toute ta nouvelle colonne C de la feuille 2
    et pour le RECHERCHEV, un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHEV(A2&"@"&B2,feuil2!$C$2$D$500,2,FAUX)
    à dérouler dans toute ta colonne C de la feuille 1

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Par défaut
    Je n'ai qu'une seule chose a te dire groslou2 MERCI, ce n'est pas une épine mais une poutre que tu me retire du pied. Je viens de tester ta solution (la seconde) et elle marche parfaitement bien.

    Alors une fois de plus MERCI

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Une solution VBA. Dans le module associé à la feuille 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column > 2 Then Exit Sub
    If (Me.Range("A" & Target.Row) <> "") And (Me.Range("B" & Target.Row) <> "") Then
        Me.Range("C" & Target.Row) = fPerso(Me.Range("A" & Target.Row).Value, Me.Range("B" & Target.Row).Value)
    End If
    End Sub
    Et dans un module Standard
    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
    Option Explicit
     
    Public Function fPerso(ByVal A As Variant, ByVal B As Variant) As Variant
    Dim v As Variant, l As Long
     
    v = ThisWorkbook.Worksheets("Feuil2").Range("A1").CurrentRegion.Value
     
    For l = 1 To UBound(v, 1)
        If (v(l, 1) = A) And (v(l, 2) = B) Then Exit For
    Next l
     
    If l <= UBound(v, 1) Then
        fPerso = v(l, 3)
    Else
        fPerso = Empty
    End If
     
     
    v = Empty
    End Function
    Il n'y a alors aucune formule à mettre dans les feuilles. Il faut juste que la feuille 2 soit remplie logiquement, c'est-à-dire sans sauter des lignes.

    COrdialement,

    PGZ

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

Discussions similaires

  1. [XL-2007] macro pour envoyer mail avec outlook express avec image
    Par HIGGUINS dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/02/2011, 11h47
  2. [XL-2007] macro pour copier coller des selections multiples
    Par bedoch dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/06/2009, 12h31
  3. case a cocher avec choix multiple
    Par ikramta dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/03/2009, 17h45
  4. Création d'une macro pour remplissage auto
    Par Laura-c dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 19/06/2008, 16h40
  5. pb de select avec size avec choix multiple
    Par La_picolle dans le forum ASP
    Réponses: 10
    Dernier message: 28/08/2003, 15h21

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