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 :

Incompatibilité du type au niveau de la fonction "Transpose"


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Macao

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 15
    Par défaut Incompatibilité du type au niveau de la fonction "Transpose"
    Bonjour;
    Voilà mon problème : j'ai deux fichiers excel très volumineux (environ 10 000 lignes chacun). J'aimerais extraire les lignes différentes entre les deux fichiers. Sachant que je ne suis pas très doué en excel, comment puis-je m'y prendre
    j'ai trouvé le code suivant mais ça donne une erreur lors de la compilation au niveau de la fonction Transpose(DicoF2.keys).
    Merci d'avance

    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
    Sub ExtractionDifférence()
        Application.ScreenUpdating = False
        Set F1 = ThisWorkbook
     
    OuvrirFichier1:
        Fichier1 = Application.GetOpenFilename(filefilter:="tout,*.*", Title:="Sélection")
        If Fichier1 = False Then
            MsgBox "aucun fichier sélectionné", vbOKOnly + vbCritical, "fin de procédure "
            Exit Sub
        End If
        ThisWorkbook.FollowHyperlink Fichier1
        Fichier1 = ActiveWindow.Caption
     
    OuvrirFichier2:
        Fichier2 = Application.GetOpenFilename(filefilter:="tout,*.*", Title:="Sélection")
        If Fichier2 = False Then
            MsgBox "aucun fichier sélectionné", vbOKOnly + vbCritical, "fin de procédure "
            Exit Sub
        End If
        If Fichier1 = Fichier2 Then
            MsgBox "Ce ficier est déjà ouvert"
            GoTo OuvrirFichier2
        End If
        ThisWorkbook.FollowHyperlink Fichier2
        Fichier2 = ActiveWindow.Caption
     
        F1.Activate
        Set F2 = Windows(Fichier1)
        Set F3 = Windows(Fichier2)
        ActiveSheet.AutoFilterMode = False
        Columns("A:C").ClearContents
     
        Set DicoF2 = CreateObject("Scripting.Dictionary")
        Set DicoF3 = CreateObject("Scripting.Dictionary")
        F2.Activate
        Sheets(1).Activate
        DerLigF2 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Row
        DerColF2 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Column
        For Each C In Range("A2:A" & DerLigF2)
            For i = 1 To DerColF2
                If Cells(C.Row, i) = "" Then ValCell = "-" Else ValCell = Cells(C.Row, i) & "£"
                X = X & ValCell
            Next i
            DebC = C
            C = X
            DicoF2.Add C, ""
            C = DebC
            X = ""
        Next C
        F1.Activate
        [A2].Resize(DicoF2.Count) = Application.Transpose(DicoF2.keys)
     
        F3.Activate
        Sheets(1).Activate
        DerLigF3 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Row
        DerColF3 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Column
        For Each C In Range("A2:A" & DerLigF3)
            For i = 1 To DerColF3
                If Cells(C.Row, i) = "" Then ValCell = "-" Else ValCell = Cells(C.Row, i) & "£"
                X = X & ValCell
            Next i
            DebC = C
            C = X
            DicoF3.Add C, ""
            C = DebC
            X = ""
        Next C
        F1.Activate
    [B2].Resize(DicoF3.Count) = Application.Transpose(DicoF3.keys)[/I][/I]
     
        DerLigF1 = Application.WorksheetFunction.Max(DerLigF2, DerLigF3)
        Range("C2:C" & DerLigF1).FormulaR1C1 = "=IF(RC[-2]=RC[-1],"""",""Ecart"")"
        Range("A1") = Fichier1
        Range("B1") = Fichier2
        Range("C1") = "'Test"
        Columns("A:B").Select
        Selection.EntireColumn.AutoFit
        Selection.Replace What:="£", Replacement:="  ", LookAt:=xlPart
        Range("A1:C1").AutoFilter
        ActiveSheet.Range("A1:C" & DerLigF1).AutoFilter Field:=3, Criteria1:="Ecart"
    End Sub

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Sara-dahour Voir le message
    j'ai trouvé le code suivant mais ça donne une erreur lors de la compilation au niveau de la fonction Transpose(DicoF2.keys).
    Quel message d'erreur ?

    Mets un point d'arrêt juste avant cette ligne et regarde ce que contient DicoF2 dans la fenêtre des variables locales.

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Macao

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 15
    Par défaut
    Bonjour ,
    DICOf2 est un objet dans lequel on met tous ce qui se trouve dans la 1ere extraction , le problème c'est que on a toujours un message d’erreur suivant : incompatibilité du type

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je n'ai pas demandé ce que tu souhaites que DicoF2 contienne mais ce qu'il contient effectivement.
    Je le répète : mets un point d'arrêt sur la ligne précédente et regarde dans la liste des variables locales.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    moi je suis curieux "C" c'est quoi une range ou un string faut savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     For Each C In Range("A2:A" & DerLigF2)'!!!!!!!!!!!!!!!!!!!!!!!!!!
            For i = 1 To DerColF2
                If Cells(C.Row, i) = "" Then ValCell = "-" Else ValCell = Cells(C.Row, i) & "£"
                X = X & ValCell
            Next i
            DebC = C'!!!!!!!!!!!!!
            C = X'!!!!!!!!!!!!!!!!!!!!!!!!!!!
            DicoF2.Add C, ""'ben la ca plante forcement
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Macao

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 15
    Par défaut
    je sais pas comment le faire merci bien de m'aider

  7. #7
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Macao

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 15
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re
    moi je suis curieux "C" c'est quoi une range ou un string faut savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     For Each C In Range("A2:A" & DerLigF2)'!!!!!!!!!!!!!!!!!!!!!!!!!!
            For i = 1 To DerColF2
                If Cells(C.Row, i) = "" Then ValCell = "-" Else ValCell = Cells(C.Row, i) & "£"
                X = X & ValCell
            Next i
            DebC = C'!!!!!!!!!!!!!
            C = X'!!!!!!!!!!!!!!!!!!!!!!!!!!!
            DicoF2.Add C, ""'ben la ca plante forcement
    C retourne le contenu de la première cellule de chaque ligne, c'est ce que j'ai obtenu après avoir fait MSGBOX C

  8. #8
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 969
    Par défaut
    bonsoir
    tu cherches à comparer deux colonnes chacune d'une onglet différentes?? ce n'est pas un état de rapprochement bancaire ??
    si c'est le cas et que tu es pas doué en Excel tu peux procéder sans VBA
    données en colonne A
    Données en colonne B
    et en colonne C tu met la formule suivante et tu copier vers le bas
    SI(NB.SI($A$1:$A1;A1)>NB.SI($B$1:$B$6;A1);A1;"")
    c'est un formule que j'ai trouvé sur ce super site

  9. #9
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Transpose a une limite pour les tableaux trop grands

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/10/2016, 11h32
  2. [AC-2003] Erreur incompatibilité de type : code SQL dans une fonction VBA
    Par KonTiKI dans le forum VBA Access
    Réponses: 5
    Dernier message: 18/04/2016, 17h15
  3. Réponses: 1
    Dernier message: 24/01/2012, 12h37
  4. Incompatibilité de type sur fonction Evaluate
    Par Titened dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/03/2011, 08h44
  5. la fonction DatePart incompatibilité de type
    Par adriennoob dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/04/2010, 18h39

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