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 :

Recherche avec plusieurs critères et mise à jour automatique


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Recherche avec plusieurs critères et mise à jour automatique
    Bonjour,

    J'ai deux fichiers excel A.xls et B.xls ,
    Dans le fichier A.xls j'ai 4 colonnes A=table,B=column,C=Type,D=Exemple
    Dans le fichier B.xls J'ai 4 colonnes E=table,F=column,G=Type,H=Exemple

    Je cherche une fonction excel ou un code VBA qui permet la mise à jours automatique des colonnes C et D du fichier A.xls à partir des colonne G et H du fichier B.xls, en effectuant une recherche avec les deux critères table et column.

    Merci .

  2. #2
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    dans A en C
    mais après quelle recherche? quels critères
    si le truc est gros une solution VBA est envisageable

  3. #3
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut Un truc du genre
    Bonjour

    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
    Sub nouveau()
    Dim Cls As Workbook
    Dim Cld As Workbook
    Dim cell As Range
     
     
    'set Cls = ("c:\'chemin du classeur"), true
    Cld = ThisWorkbook
     
    For Each cell In Cls.Sheets("feuil1").Range("a1:a" & Cls.Sheets("feuil1").Range("a65000").End(xlUp).Row)
      '    Set c = cld.Feuil10.Range("a:a").Find(cell.Value2, LookIn:=xlValues, LookAt:=xlWhole)
        '     If Not c Is Nothing Then i = c.Row
            'if cld.col2.value = cls.col2.value then
            'Cld.col3.Value = Cls.col3.Value
            'Cld.col4.Value = Cls.col4.Value
        Else
        'goto next value in cld
      Next cell
    End Sub
    Désolé, je finirai plus tard, travail oblige.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Merci . mais j'ai besoin de copier par exp dans la colonne C(A.xls)= la valeur de la colonne G(B.xls) where A(A.xls)=E(B.xls) et B(A.xls)=F(B.xls) ??

    Citation Envoyé par keygen08 Voir le message
    Bonjour

    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
    Sub nouveau()
    Dim Cls As Workbook
    Dim Cld As Workbook
    Dim cell As Range
     
     
    'set Cls = ("c:\'chemin du classeur"), true
    Cld = ThisWorkbook
     
    For Each cell In Cls.Sheets("feuil1").Range("a1:a" & Cls.Sheets("feuil1").Range("a65000").End(xlUp).Row)
      '    Set c = cld.Feuil10.Range("a:a").Find(cell.Value2, LookIn:=xlValues, LookAt:=xlWhole)
        '     If Not c Is Nothing Then i = c.Row
            'if cld.col2.value = cls.col2.value then
            'Cld.col3.Value = Cls.col3.Value
            'Cld.col4.Value = Cls.col4.Value
        Else
        'goto next value in cld
      Next cell
    End Sub
    Désolé, je finirai plus tard, travail oblige.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    J'ai deux fichiers excel A.xls et B.xls ,
    Dans le fichier A.xls j'ai 4 colonnes A=table,B=column,C=Type,D=Exemple
    Dans le fichier B.xls J'ai 4 colonnes E=table,F=column,G=Type,H=Exemple

    Je cherche une fonction excel ou un code VBA qui permet la mise à jours automatique des colonnes C et D du fichier A.xls à partir des colonne G et H du fichier B.xls, en effectuant une recherche avec les deux critères table et column.

    Merci

  6. #6
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par emowpya Voir le message
    Bonjour,

    J'ai deux fichiers excel A.xls et B.xls ,
    Dans le fichier A.xls j'ai 4 colonnes A=table,B=column,C=Type,D=Exemple
    Dans le fichier B.xls J'ai 4 colonnes E=table,F=column,G=Type,H=Exemple

    Je cherche une fonction excel ou un code VBA qui permet la mise à jours automatique des colonnes C et D du fichier A.xls à partir des colonne G et H du fichier B.xls, en effectuant une recherche avec les deux critères table et column.

    Merci

    bonsoir,

    si la grandeur du nombre de données à ramener n'est pas trop grand (voir jusqu'à 500 lignes) tu peux utiliser une formule matricielle semblable à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(INDEX('C:\Users\emowpya\Mon dossier\[Creation dynamiques.xlsb]Paramètres1'!$G$1:$H$13;PETITE.VALEUR(SI('C:\Users\emowpya\Documents\[Creation dynamiques.xlsb]Paramètres1'!$H$1:$H$13=1;LIGNE('C:\Users\emowpya\Mon dossier\[Creation dynamiques.xlsb]Paramètres1'!$H$1:$H$13));LIGNE(1:100));{1.2});"")
    sinon essayes avec Microsoft Query pour renvoyer un objet QueryTable
    souvent j'utilises cette technique particulièrement efficace et moins contraignante, bien que peu doué dans les syntaxes de requêtes SQL.

    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
        Dim expt As ListObject, data As QueryTable
     
        Set data = ActiveSheet.ListObjects.Add(SourceType:=0, _
        source:=Array(Array("ODBC;DSN=Excel Files;" _
        & "DBQ=C:\Users\emowpya\Desktop\Mon dossier\Noyau.xlsb;" _
        & "DefaultDir=C:\Users\emowpya\Desktop\Mon dossier"), _
        Array(" dossier;" _
        & "DriverId=1046;" _
        & "MaxBufferSize=2048;" _
        & "PageTimeout=5;")), _
        Destination:=Range("$B$3")).QueryTable
     
        'la commande suivante définit certains champs de la table en ignorant d'autres
        'définit les critères, et l'ordre de tri
        With data
            .CommandText = Array( _
                "SELECT Table_Reference.`Nom public`, Table_Reference.Titre, Table_Reference.Prenom, Table_Reference.Nom, Table_Reference.Téléphone, Table_Reference.Statut" _
                & Chr(13) & "" & Chr(10) & "FROM Table_Reference Table_Reference" & Chr(13) & "" & Chr(10) _
                & "WHERE ", "(Table_Reference.Prenom='Paul') AND (Table_Reference.Nom<>'Dupont')" & Chr(13) & "" & Chr(10) _
                & "ORDER BY Table_Reference.Prenom, Table_Reference.Nom")
     
            '.AdjustColumnWidth = False
            '.FillAdjacentFormulas = True ' propriété très utile qui me permet d'actualiser les formules à droite de l'objet
            '.MaintainConnection = False
            .Refresh
            .Refresh BackgroundQuery:=False
            .Delete 'supprime la connection
        End With
     
     
        Set expt = ActiveSheet.ListObjects(1)
        expt.Unlink
        expt.TableStyle = ""
        expt.Unlist 'transforme la liste en plage ordinaire
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  7. #7
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour
    j'ai besoin de copier par exp dans la colonne C(A.xls)= la valeur de la colonne G(B.xls) where A(A.xls)=E(B.xls) et B(A.xls)=F(B.xls) ??
    C'est l'idée que j'ai develloper,... est eu le temps de terminer

    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
    Sub nouveau()
    Dim Cls As Workbook
    Dim Cld As Workbook
    Dim cell As Range
    Dim num As Integer
     
    Set Cld = ThisWorkbook
    'ouvre le classeur source en lecture seule
    Set Cls = Application.Workbooks.Open("d:\classeurB.xls", , True)
    'pour toutes les cellules classeurA, colonne a:a
    For Each cell In Cld.Sheets("feuil1").Range("a2:a" & Cld.Sheets("feuil1").Range("a65000").End(xlUp).Row)
    i = 2
    autre:
    'cherche si la valeur clasA A2 se trouve dans le clasB,colE
          Set c = Cls.Sheets(1).Range("e" & i & ":e50").Find(cell.Text, LookIn:=xlValues, LookAt:=xlWhole)
          If Not c Is Nothing Then i = c.Row
    'si la valeur existe, compare les valeurs des colonne clasA colB avec clasB colF
                If Cld.Sheets(1).Range("b" & cell.Row).Value = Cls.Sheets(1).Range("f" & i).Value Then
    'si les valeur comparé sont exactes alors on inscrit sur clas A col C et COL D
                Cld.Sheets(1).Range("c" & cell.Row).Value = Cls.Sheets(1).Range("g" & i).Value
                Cld.Sheets(1).Range("d" & cell.Row).Value = Cls.Sheets(1).Range("h" & i).Value
                    Else
    'sinon l'on cherche dans le reste du tableau
                    i = i + 1
                    GoTo autre
                End If
     
        Next cell
      Cls.Close
    End Sub

Discussions similaires

  1. Recherche avec plusieurs critères
    Par Eco dans le forum Excel
    Réponses: 12
    Dernier message: 20/07/2016, 18h07
  2. Recherche avec plusieurs critères
    Par vins86 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/05/2013, 20h52
  3. [MySQL] recherche avec plusieurs critéres
    Par hous04 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/02/2012, 14h50
  4. Réponses: 1
    Dernier message: 18/09/2010, 02h40
  5. VBA-E Comment réaliser une recherche avec plusieurs critères ?
    Par Larsen21 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 14/12/2006, 13h43

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