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 :

Récupérer les intersections de plusieurs lignes et colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 21
    Par défaut Récupérer les intersections de plusieurs lignes et colonnes
    Bonjour , voila mon problème :

    j'ai plusieurs cellules à modifier sur différents tableaux ( Range "A3:U13" "A18:Q27" "A33:W42" "A48:AT52" "A58:AS60" "A65:AA70" ) sur la Feuil1 et sur la Feuil2 j'ai crée 2 menus déroulants "A1""B1" qui contiens les valeurs de la 1ere colonne et la 1ere ligne de chaque tableau et un petit tableau que je veux remplire avec les valeurs des cellules intersection entre les 2 que j'ai choisi sur les 2 menus déroulantsNom : Capte.PNG
Affichages : 523
Taille : 1,6 Ko Nom : Capture.PNG
Affichages : 559
Taille : 5,8 Ko par exemple j'ai choisi la valeur 21 au 1er menu et 00590 au 2eme menu il faut qu'il me met 1 sur le nouveau tableau

    et merci d'avance

  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 Zazay, bonjour le forum,

    Explications minimum ! Est-ce que plusieurs tableaux peuvent avoir des données communes dans leur ligne 1 et leur colonne A ?
    J'ai considéré que oui mais ça complique 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub Macro1()
    Dim OT As Worksheet 'déclare la variable OT (Onglet des Tableaux)
    Dim OV As Worksheet 'déclare la variable OV (Onglet des Valeurs)
    Dim PL(1 To 6) As Range 'déclare le tableai de 6 variables PL (PLages)
    Dim I As Byte 'déclare la variable I (Incrément)
    Dim RL As Range 'déclare la variable RL (Recherche Ligne)
    Dim RC As Range 'déclare la variable RC (Receherceh Colonne)
    Dim LI As Integer 'déclare la variable LI (Ligne)
    Dim COL As Integer 'déclare la variable COL (COLonne)
     
    Set OT = Worksheets("Feuil1") 'définit l'onglet OT
    Set OV = Worksheets("Feuil2") 'définit l'onglet OV
    OV.Range("E1:J2").ClearContents 'efface les anciennes valeurs
    Set PL(1) = OT.Range("A3:U13") 'défnit la plage PL(1)
    Set PL(2) = OT.Range("A18:Q27") 'défnit la plage PL(2)
    Set PL(3) = OT.Range("A33:W42") 'défnit la plage PL(3)
    Set PL(4) = OT.Range("A48:AT52") 'défnit la plage PL(4)
    Set PL(5) = OT.Range("A58:AS60") 'défnit la plage PL(5)
    Set PL(6) = OT.Range("A65:AA70") 'défnit la plage PL(6)
     
    If OV.Range("A1").Value <> "" And OV.Range("B1") <> "" Then 'condition : si A1 et B1 ne sont pas vide
        For I = 1 To 6 'boucle sur les 6 plages
            OV.Cells(1, I + 4).Value = "Tableau " & I 'écrit dans la ligne 1
            LI = 0: COL = 0 'initialise les variable LI ET COL
            'définit la recherche RL (recherche la valeur exacte de A1 dans la colonne 1 de la plage de la boucle)
            Set RL = Application.Intersect(PL(I), OT.Columns(1)).Find(OV.Range("A1").Value, , xlValues, xlWhole)
            If Not RL Is Nothing Then LI = RL.Row 'si une occurrence est trouvée définit la ligne LI)
            'définit la recherche RC (recherche la valeur exacte de B1 dans la ligne 1 de la plage de la boucle)
            Debug.Print PL(I)(1, 1).Row
            Set RC = OT.Rows(PL(I)(1, 1).Row).Find(OV.Range("B1").Value, , xlValues, xlWhole)
            If Not RC Is Nothing Then COL = RC.Column 'si une occurrence est trouvée définit la colonne COL)
            If LI <> 0 And COL <> 0 Then OV.Cells(2, I + 4).Value = OT.Cells(LI, COL).Value 'si LI est COL sont différentes de 0 renvoie la valeur de l'intersection sous le bon tableau
        Next I 'prochain tableau de la boucle
    End If 'fin de la condition
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 21
    Par défaut
    Oui il existe des valeurs qui se répètent sur différents tableaux , je te remercie pour ta solution, je suis impatient de la tester

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 21
    Par défaut
    @Thautheme ça marche pas , aucun message d'erreur aucun changement

  5. #5
    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
    Re,

    Attention ! Ce n'est une événementielle il te faut la lancer chaque fois que tu change la valeur en A1 ou en B1. J'ai recréé ton environnement chez moi et j'ai testé, ça marchait. Malheureusement je n'ai pas enregistré le fichier. Envoie ton fichier même si ce site est peu enclin a cela...

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 21
    Par défaut
    Merci infiniment Thautheme pour cette solution , oui ça marche (une faute banale de ma part j'ai changé les noms des feuilles et j'ai oublié de les changé sur le code )

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/07/2018, 20h04
  2. [MySQL] Checkboxes : récupérer les informations sur plusieurs lignes
    Par eric41 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 12/06/2006, 12h41
  3. Réponses: 5
    Dernier message: 23/12/2005, 19h19
  4. récupérer les arguments de la ligne de commande
    Par gblanc dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/10/2005, 23h08
  5. Réponses: 5
    Dernier message: 05/10/2004, 13h05

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