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 :

liaison avec deux classeur


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    alger
    Inscrit en
    Novembre 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : alger
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2015
    Messages : 34
    Par défaut liaison avec deux classeur
    bonjour tt le monde j'ai vraiment besoin de votre aide encor une fois svp

    j'ai un Classeur nomé (cals1) qui est sensé me charger les données depuis le (clas2) après insertion de la date et le nom sur la feuil "DÉTAIL" (cals1 ) voila le code vba utilise sur la feuil "DÉTAIL" (cals1 ) je n'arrive plus a résoudre le probable. y a t'il un possibilité d’arranger ça svp

    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
    Option Explicit
     
    Dim fm As Worksheet, tablo, tabloR1(), tabloR2()
     
    Dim dico1 As Object, dico2 As Object, dico3 As Object, dico4 As Object
    Dim i&, j&, k1&, k2&, dte As Date, client$
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Application.EnableEvents = False
        If Target.Address = "$A$6" Or Target.Address = "$D$6" _
                And (Range("A6") <> "" And Range("D6") <> "") Then
     
            Set dico1 = CreateObject("Scripting.Dictionary")
            Set dico2 = CreateObject("Scripting.Dictionary")
            Set dico3 = CreateObject("Scripting.Dictionary")
            Set dico4 = CreateObject("Scripting.Dictionary")
     
            Set fm = Sheets("Mouvement") = Workbook("clas2.xlsm")
     
     
            tablo = fm.Range(fm.Cells(3, 2), fm.Cells(fm.Range("B" & Rows.Count).End(xlUp).Row, 15))
            k1 = 0: k2 = 0: dte = Range("A6"): client = Range("D6")
            For i = 1 To UBound(tablo, 1)
                If tablo(i, 1) = "Sortie" And tablo(i, 2) = dte And tablo(i, 3) = Range("D6") Then
                    If tablo(i, 14) = "Agro" Then
                        If Not dico1.exists(tablo(i, 5)) Then
                            dico1(tablo(i, 5)) = tablo(i, 6)  'quantité
                            dico2(tablo(i, 5)) = tablo(i, 7)
                        Else
                            dico1(tablo(i, 5)) = dico1(tablo(i, 5)) + tablo(i, 6) 'quantité
                        End If
                    ElseIf tablo(i, 14) = "Legumes" Then
                        If Not dico3.exists(tablo(i, 5)) Then
                            dico3(tablo(i, 5)) = tablo(i, 6)  'quantité
                            dico4(tablo(i, 5)) = tablo(i, 7)
                        Else
                            dico3(tablo(i, 5)) = dico3(tablo(i, 5)) + tablo(i, 6) 'quantité
                        End If
                    End If
                End If
            Next i
        End If
     
        Range("A17:C44,G17:I28").ClearContents
        If Range("A6") = "" Or Range("D6") = "" Then GoTo fin
        On Error GoTo fin
        Range("A17").Resize(dico1.Count, 1) = Application.Transpose(dico1.keys)
        Range("B17").Resize(dico1.Count, 1) = Application.Transpose(dico1.items)
        Range("C17").Resize(dico1.Count, 1) = Application.Transpose(dico2.items)
     
        Range("G17").Resize(dico3.Count, 1) = Application.Transpose(dico3.keys)
        Range("H17").Resize(dico3.Count, 1) = Application.Transpose(dico3.items)
        Range("I17").Resize(dico3.Count, 1) = Application.Transpose(dico4.items)
     
    fin:
        Application.EnableEvents = True
    End Sub
    je pense que le problème viens de cette ligne du code qui es mal formulé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set fm = Sheets("Mouvement") = Workbook("clas2.xlsm")

    je vous joins mes des classeur

    merci a vous tous
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [Toutes versions] VBA Fenetre Mise à jour.Liaisons avec autre classeur
    Par vivi4561 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/09/2009, 09h30
  2. Restaurer la liaison avec un classeur Excel
    Par Mors_Ubyte dans le forum VBA Access
    Réponses: 0
    Dernier message: 04/06/2008, 14h06
  3. Liaisons entre deux classeurs
    Par Daranc dans le forum Excel
    Réponses: 2
    Dernier message: 09/01/2008, 07h33
  4. liaison de deux classeurs excel
    Par afssaLERH dans le forum Excel
    Réponses: 2
    Dernier message: 28/11/2007, 14h46
  5. liaison avec autre classeur
    Par murka62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/11/2007, 18h18

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