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 de recherche [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Par défaut Macro de recherche
    Bonjour,
    je suis débutant dans le domaine de la programmation VBA et j'aimerai avoir un peu d'aide. Je cherche à faire une macro qui à partir des données contenues dans la colonne F, va chercher dans un autre classeur cette donnée et met la valeur de la case I de cet autre classeur dans la case G du classeur de départ. Je ne sais pas si mon problème est assez clair.
    Si quelqu'un peut m'aider je le remercie d'avance.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Hello,

    Pas très bien saisis ce que tu veux réellement.

    Tu veux :

    1) A partir des données de la colonne F, va chercher dans un autre classeur cette donnée ???

    2) Prends la valeur I du classeur choisi ???

    3) Mettre cette valeur I dans le classeur de départ.

    Hm pas très clair...

    C'est quoi ces données en F ??

    Prendre la valeur I... tu veux dire toute la colonne I ??

    Peux-tu déposer un fichier exemple avec plus de précisions stp...

    Bon dimanche, mOOm.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    Tu peux tester cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim i as long
    Dim j as long
    Dim wb1 as workbook '1er workbook
    Dim wb2 as workbook '2ème workbook
     
    For i = 1 to 500 'disons pour les 500 premières lignes
        For j = 1 to 500
            If wb1.cells(i,6).value = wb2.cells(j,6).value Then
                wb1.cells(i,7).value = wb2.cells(j,9).value
            End If
        Next
    Next
    Je viens de l'écrire sans tester. Peux-tu tester pour moi ? Ici, la macro compare la colonne F de wb1 à la colonne F de wb2. Si la correspondance est trouvée, tu mets dans G de wb1 la valeur provenant de I de wb2 correspondante.

    Si jamais tu veux comparer F de wb1 à H de wb2 (par exemple, vu que ce n'était pas très clair), tu remplaces par Bonne chance pour la suite.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Par défaut
    Voilà ce que j'ai pu faire. A chaque exécution je fais un filtre pour avoir la valeur que je cherche dans le fichier suivi, je sélectionne toutes les lignes qui peuvent etre remplies et je les ramène dans mon classeur Macro, ensuite je décale les données vers le haut pour supprimer la ligne de titre ou j'ai effectuer le filtre. Mais cette action est assez longue et j'aimerai la rendre plus rapide donc si vous avez quelques idées pour améliorer mon code, elles seront bienvenues.
    Dessous j'ai mis la partie du code pour vous montrer le problème. Et si quelqu'un sait comment je peux faire pour que sa fonctionne sans que le classeur suivi soit ouvert je suis aussi preneur

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Private Sub Partie_Débit_Click()
    Dim line As Integer
    Dim debit As String
    y = TextBox2.Value                             
    Partie_Débit = False Then                   
    Windows("Macro.xls").Activate
        For line = 2 To 1500
            If IsEmpty(Cells(line, 3)) Then Exit For        
            debit = Cells(line, 3).Value                
            Cells.Select
            Windows("Suivi.xls").Activate                    
            Selection.AutoFilter Field:=y, Criteria1:=debit, Operator:=xlAnd 
            Range("E1:E852").Select             
            Range("E852").Activate
            Selection.Copy                              
            Windows("Macro.xls").Activate  
            Sheets("feuil1").Select  
            Range("G" & line).Select     
            ActiveSheet.Paste   
            Range("G" & line).Select
            Application.CutCopyMode = False
            Selection.Delete shift:=xlUp       
     
                    Windows("Suivi.xls").Activate      
                    Range("AA1:AA852").Select                
                    Range("AA852").Activate
                    Selection.Copy                                      
                    Windows("Macro.xls").Activate 
                    Sheets("feuil1").Select                              
                    Range("E" & line).Select                      
                    ActiveSheet.Paste                                        
                    Range("E" & line).Select
                    Application.CutCopyMode = False
                    Selection.Delete shift:=xlUp                            
     
                          Windows("Suivi.xls").Activate      
                          Range("AB1:AB852").Select
                          Range("AB852").Activate
                          Selection.Copy
                          Windows("Macro.xls").Activate
                          Sheets("feuil1").Select
                          Range("H" & line).Select
                          ActiveSheet.Paste
                          Range("H" & line).Select
                          Application.CutCopyMode = False
                          Selection.Delete shift:=xlUp
     
     
            Next line
    End If
     
    End Sub

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

Discussions similaires

  1. macro _ recherche
    Par abouhossam dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/02/2008, 13h52
  2. [Macro de Recherche] Comment faire varier une 4eme variable
    Par Vin_SuFu_R@T dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/01/2008, 12h35
  3. macro : fonction recherche
    Par M8407108 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/12/2007, 23h45
  4. Macro de recherche dans WORD
    Par damall dans le forum VBA Word
    Réponses: 11
    Dernier message: 25/08/2007, 11h13
  5. Macro de recherche/remplace automatique
    Par phil011 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/08/2007, 11h00

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