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 :

Lien entre 2 Classeur Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 147
    Par défaut Lien entre 2 Classeur Excel
    Bjr,

    J'ai le code suivant :
    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
    Sub Macro1()
     
    Dim ok As Boolean
     
    For i = 1 To 1   'Feuil1 colonne 1
     
        Worksheets("Qté_IMP").Select
     
          ValeuràChercher = Worksheets("Qté_IMP").Cells(i, 1).Value
     
          MemoNoLigneTrouvée = 0 ''initialise le N° de la ligne trouvée
     
        Windows("Calendrier.xls").Activate
     
        Range("A1:A3000").Find(What:=ValeuràChercher, After:=Range("A1"), LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
            .Select  
     
      Next i
     
    End Sub
    Ce dernier ne fonctionne pas, j'ai une erreur ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Range("A1:A3000").Find(What:=ValeuràChercher, After:=Range("A1"), LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
            .Select
    En fait le but est de chercher une valeur présente au niveau d'une Feuil d'un Classeur Excel dans une autre Feuil d'un autre Classeur Excel.

    Merci

  2. #2
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Hello !
    Si tu veux être sûr de l'endroit où tu te trouves, à chaque fois que tu pointes sur une cellule Range("B2"), tu dois mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks("MonClasseur.xls").Worksheets("BonOnglet").Range("B2")
    Ce n'est qu'un exemple, mais ça devrait te donner la bonne direction.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 147
    Par défaut
    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
    Sub Macro1()
     
    Dim ok As Boolean
     
    For I = 2 To 2   'Feuil1 colonne 1
     
        Workbooks("IMP.xls").Worksheets("Qté_IMP").Select
     
          ValeuràChercher = Workbooks("IMP.xls").Worksheets("Qté_IMP").Cells(I, 1).Value
     
          MemoNoLigneTrouvée = 0 ''initialise le N° de la ligne trouvée
     
        Windows("Calendrier.xls").Activate
     
        Range("A1:A3000").Find(What:=ValeuràChercher, After:=Range("A1"), LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
            .Select
     
         Workbooks("IMP.xls").Worksheets("Qté_IMP").Select
     
      Next I
     
    End Sub
    J'ai essayé ce code mais ca ne marche pas non plus.

    L'erreur est la suivante : Erreur définie par l'application ou par l'objet.

    Merci

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Je ne suis pas sur ,mais comme tu changes de classeur tu devrais peut-être definir tes variables en public

    Dis moi si cela t'aide

    Igloobel

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 147
    Par défaut
    C'est a dire??

  6. #6
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Mais, l'erreur, elle se trouve sur quelle ligne? Parceque si tu fais un .Select sur la cellule ramené par le .Find et que le .find n'a rien trouvé, tu peux avoir cette erreur.
    Et je ne comprend pas trop pourquoi tu fais des "select" sans jamais utiliser "Selection".
    Et est-ce que tes 2 classeurs sont bien ouverts?
    Et fais attention en les nommant dans les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks("MonClasseur.xls")
    parce que des fois, il ne faut pas mettre le .xls à la fin

  7. #7
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 15
    Par défaut
    Bonjour,

    J'ai eu à résoudre un problème du même genre, je dois rechercher une ligne contenant certaines valeurs dans une feuille. Si je ne les trouve pas, je vais les chercher dans un autre classeur pour m'éviter de devoir les enregistrer manuellement. Ci-dessous le code utilisé.
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    Private Sub CommandButton1_Click()
     
        Dim Dossier As String * 5
        Dim Nocli As Integer
        Dim Sequence As String * 8
        Dim Client As String
        Dim Chantier As String
        Dim Poids As Currency
        Dim Emplac As String * 1
        Dim Nodoss As String * 2
        Dim Noseq As String * 4
        Nodoss = TextBox1
     
        Nocli = TextBox2
        Noseq = TextBox3
        Dossier = "CHT" & Nodoss
        Sequence = "SEQ-" & Noseq
        Dim VC1 As String * 5
        Dim VC2 As Integer
        Dim VC3 As String * 8
        Dim Compt As Integer
        Client = " "
        Chantier = " "
        Emplac = " "
     
    '   ***** RECHERCHE DE LA SELECTION UTILISATEUR
     
        Range("A1").Select
        For Compt = 1 To 1000
            VC1 = ActiveCell.Offset(Compt, 0).Value
            VC2 = ActiveCell.Offset(Compt, 1).Value
            VC3 = ActiveCell.Offset(Compt, 2).Value
            If VC1 = Dossier Then
                If VC2 = Nocli Then
                    If VC3 = Sequence Then
                        Client = ActiveCell.Offset(Compt, 3).Value
                        Chantier = ActiveCell.Offset(Compt, 4).Value
                        Poids = ActiveCell.Offset(Compt, 5).Value
                        If ActiveCell.Offset(Compt, 6).Value <> "" Then
                            Emplac = ActiveCell.Offset(Compt, 6).Value
                        End If
                        ActiveCell.Offset(Compt, 6).Select
                        Compt = 1000
                    End If
                End If
            End If
        Next Compt
     
    '   ***** SI TROUVÉ, AFFICHAGE DES DONNÉS DANS USERFORM2
     
        If Client <> " " Then
            GoTo Affich_Form2
        End If
     
    '   ***** SI PAS TROUVÉ, RECHERCHE DANS LE CLASSEUR LISTE - TRANSPORT
     
        Workbooks.Open Filename:="V:\liste - transport 2005.xls"
        Sheets("2005").Select
        Range("A2").Select
        For Compt = 1 To 10000
            VC1 = ActiveCell.Offset(Compt, 7).Value
            VC2 = ActiveCell.Offset(Compt, 8).Value
            VC3 = ActiveCell.Offset(Compt, 9).Value
            If VC1 = Dossier Then
                If VC2 = Nocli Then
                    If VC3 = Sequence Then
                        Client = ActiveCell.Offset(Compt, 1).Value
                        Chantier = ActiveCell.Offset(Compt, 2).Value
                        Poids = ActiveCell.Offset(Compt, 10).Value
                        Compt = 10000
                    End If
                End If
            End If
        Next Compt
        ActiveWindow.Close
     
        If Client = " " And Chantier = " " Then
            MsgBox "AUCUNE REFERENCE TROUVÉE", 48, "*****  ERREUR  *****"
            TextBox3.SetFocus
            GoTo Erreur
        End If
        Range("A1001").Select
        Selection.End(xlUp).Select
        ActiveCell.Offset(1, 0).Value = Dossier
        ActiveCell.Offset(1, 1).Value = Nocli
        ActiveCell.Offset(1, 2).Value = Sequence
        ActiveCell.Offset(1, 3).Value = Client
        ActiveCell.Offset(1, 4).Value = Chantier
        ActiveCell.Offset(1, 5).Value = Poids
        ActiveCell.Offset(1, 6).Select
        ActiveWorkbook.Save
     
    Affich_Form2:
     
        Application.ScreenUpdating = True
        Unload UserForm1
        UserForm2.TextBox1 = Dossier
        UserForm2.TextBox2 = Nocli
        UserForm2.TextBox3 = Sequence
        UserForm2.TextBox4 = Client
        UserForm2.TextBox5 = Chantier
        UserForm2.TextBox6 = Poids
        If Emplac <> " " Then
            UserForm2.TextBox7 = Emplac
        End If
        UserForm2.Show
        Application.ScreenUpdating = False
     
    Erreur:
     
    End Sub
    Je pense que tu peux t'en inspirer pour résoudre ton problème.

    Meilleures salutations. dp

  8. #8
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    "Résolu"?
    Ha bon? Ben tant mieux, mais alors, c'était quoi, le souci?

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

Discussions similaires

  1. Désactiver les liens entre les classeurs Excel sans alerte
    Par flevielle dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/09/2007, 15h18
  2. Liens entre word et excel
    Par polodu84 dans le forum Microsoft Office
    Réponses: 1
    Dernier message: 24/04/2007, 11h36
  3. Réponses: 7
    Dernier message: 19/05/2006, 15h39
  4. lien vers un classeur excel
    Par maketossss dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/01/2006, 11h46
  5. Pb de lien entre Access et Excel pour des fonctions VBA
    Par favien dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/11/2005, 01h00

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