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 :

VBD- Remplissange et Liaison de BD avec deux conditions


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Par défaut VBD- Remplissange et Liaison de BD avec deux conditions
    Bonjour,

    Je suis nouveau sur ce site et je me présente à vous aujourd'hui afin de vous faire part de ma problématique du jour.

    Je débute en VBA et je bloque sur un problème de boucles. Voici ma situation:

    J'ai 2 bases de données: BD_mere et BD_aremplir (une par onglet)

    Je souhaite faciliter le remplissage de la deuxième en automatisant l'opération

    J'ai deux colonnes qui me servent d'identifiant unique (dans les deux BD) disons :
    -colonne 1 : catégorie
    -colonne 2 : type d'espace

    Dans une même catégorie on peut retrouver plusieurs types d'espace.

    Ce que je souhaite faire c'est ceci:

    En sélectionnant une catégorie "x" et un type d'espace "y" dans la BD_aremplir, j'aimerais que d'autres infos qu'on retrouve dans la

    ligne qui contient cette categorie et ce type d'espace dans la BD_mere soient inscrites automatiquement dans les cellules appropriées de la BD_aremplir

    J'ai essayé avec 2 for ( un qui parcours LES CATEGORIES DE BD_mere et un qui parcours BD_aremplir) et un if pour reunir les 2 condition de categorie et de type d'espace.

    maiis ca ne fonctionne pas :/

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Barka, bonjour le forum,

    Voilà ce que je te propose :
    1 - Tu copies le code ci-dessous dans le composant de l'onglet à remplir
    2 - Dans une ligne de cet onglet, tu renseignes la catégorie dans la colonne A
    3- Tu renseignes le type d'espace dans la colonne B de la même ligne
    4 - Tu valides puis tu double-clique sur n'importe quelle cellule de la ligne...

    Le code :

    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
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim BM As Worksheet 'déclare la variable BM (Basse Mère)
    Dim BR As Worksheet 'déclare la variable BR (Basse à Remplir)
    Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
    Dim C As String 'déclare la variable C (Catégorie)
    Dim TE As String 'déclare la variable TE (Type d'Espace)
    Dim I As Long 'déclare la variable I (Incrément)
     
    Set BM = Worksheets("BD_mere") 'définit l'onglet BM
    Set BR = Worksheets("BD_aremplir") 'définit l'onglet BR
    TV = BM.Range("a1").CurrentRegion 'définit le tableau des valeurs TV
    'définit la catégorie C, si C est vide, sélectione la cellule en colonne A, message, sort de la procédure
    C = Me.Cells(Target.Row, "A"): If C = "" Then Me.Cells(Target.Row, "A").Select: MsgBox "Renseigner la catégorie": Exit Sub
    'définit le type d'espace TE, si TE est vide, sélectione la cellule en colonne B, message, sort de la procédure
    TE = Me.Cells(Target.Row, 2): If TE = "" Then Me.Cells(Target.Row, 2).Select: MsgBox "Renseigner le type d'espace": Exit Sub
    For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
        'condition :  si la donnée ligne I colonne 1 de TV est égale à C et si la donnée ligne I colonne 2 de TV est égale à TE
        If TV(I, 1) = C And TV(I, 2) = TE Then
            'renvoie la ligne I du tableau TV dans la cellue redimensionnée ligne de la cellule double-cliquée colonne A
            Me.Cells(Target.Row, "A").Resize(1, UBound(TV, 2)).Value = Application.Index(TV, I)
            Exit For 'sort de la boucle
        End If 'fin de la condition
    Next I 'prochaine ;igne de la boucle
    End Sub

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Par défaut
    Bonjour Thautheme!

    Tout d'abord merci pour ta réponse ! Je l'ai essayé et elle fonctionne bien

    En modifiant la mise en forme de mon tableau BD_aremplir mes colonnes Catégorie et Type d'espace se retrouve en colonne 4 et 5 (D et E). J'ai essayé de comprendre le code que tu m'as envoyé pour le modifier mais je dois avouer que j'ai un peu de difficultés.

    Je souhaite pousser un peu plus loin fonctionnement du programme. Je me demande si c'est possible d’insérer une liste déroulante dans les cellules des colonnes Catégorie et Type d'espace et selon ce qui est choisi le programme rempli les autres cellules comme ce qu'on a en ce moment.

    J'ai essayé et je me retrouve avec de longues listes déroulantes :
    -Dans la liste catégorie je me retrouve avec plusieurs fois la même catégorie "A" ( ce qui est normal vue que plusieurs types d'espace ont la même catégorie)

    Je me demandais donc 1) s'il y a moyen d’éviter cette répétition et 2) avoir la liste déroulante de Type d'espace qui soit dynamique et au d'adapte au choix fait dans la liste Catégorie.

    Merci encore pour vos réponses!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Thautheme ravis de te revoir!

Discussions similaires

  1. Linq - jointure avec deux conditions
    Par boby62423 dans le forum Linq
    Réponses: 1
    Dernier message: 02/04/2009, 09h51
  2. Recherche avec deux conditions et deux boucles?
    Par neiluj26 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/10/2008, 19h49
  3. ADO avec deux conditions WHERE
    Par MuadDib_II dans le forum IHM
    Réponses: 9
    Dernier message: 29/07/2008, 15h42
  4. MINUS avec deux conditions
    Par miketidy dans le forum SQL
    Réponses: 14
    Dernier message: 24/06/2008, 09h57
  5. [VBA-E] Countif avec deux conditions
    Par bonilla dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/09/2007, 15h30

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