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 :

[vb excel] différences bizarre dans macro excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Mugette
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 194
    Points : 80
    Points
    80
    Par défaut [vb excel] différences bizarre dans macro excel
    est-il possible qu'il y ait des bugs dans le vb editor d'excel ??

    parce que la je vois pas du tout pourquoi mon code ne marche pas...
    j'ai deux fois le meme code sur 2 scripts et ces deux scripts ne font pas la meme chose c'est pas normal...n'est-ca pas ?

    aidez-moi, si ça vous intéresse je mets le code.


    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
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
     
    Dim i
    Dim imax
    Dim j
    Dim jmax
    Dim n
    Dim nmax
    Dim k
    Dim m
    Dim tab1_csv()
    Dim tab1_report()
    Dim tab1_report_temp()
     
    Public Sub traitement_csv1()
     
    'récupération des données du fichier csv jusqu'à R49
        j = 5
        k = 1
     
        While Workbooks("COUR_LOCAL_" & DateReport & ".csv").Worksheets("COUR_LOCAL_" & DateReport).Cells(j + 1, 1).Rows.Value <> "Total_LM" 'boucle déterminant le nombre de ligne dans le csv
            If Workbooks("COUR_LOCAL_" & DateReport & ".csv").Worksheets("COUR_LOCAL_" & DateReport).Cells(j + 1, 1).Rows.Value <= "R49" Then
     
                ReDim Preserve tab1_csv(2, k)
                tab1_csv(0, k - 1) = Workbooks("COUR_LOCAL_" & DateReport & ".csv").Worksheets("COUR_LOCAL_" & DateReport).Cells(j + 1, 1).Text
                tab1_csv(1, k - 1) = Workbooks("COUR_LOCAL_" & DateReport & ".csv").Worksheets("COUR_LOCAL_" & DateReport).Cells(j + 1, 2).Text
                 k = k + 1
            End If
                j = j + 1
        Wend
        jmax = k - 2
        Workbooks("COUR_LOCAL_" & DateReport & ".csv").Close savechanges:=False
    End Sub
     
    Public Sub traitement_report1() 'les données du reporting (libellés et valeurs) sont mises dans tableau tab1_report
     
     
        i = 4
        k = 1
        While Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse1").Cells(1, i + 1).Value <> ""
            ReDim Preserve tab1_report(2, k)
            tab1_report(0, k - 1) = Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse1").Cells(1, i + 1).Text
            tab1_report(1, k - 1) = 0
            i = i + 1
            k = k + 1
        Wend
        imax = k - 2
     
    End Sub
     
    Public Sub traitement1_report_temporaire() '-->gestion du tableau tab1_report_temp pour ajouter les colonnes dans le xls
     
        n = 4
        k = 1
        While Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse1").Cells(1, n + 1).Value <> ""
            ReDim Preserve tab1_report_temp(k)
            tab1_report_temp(k - 1) = Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse1").Cells(1, n + 1).Text
            n = n + 1
            k = k + 1
        Wend
        nmax = k - 2
     
    End Sub
     
    Sub comparaison_csv1() 'comparaison entre tab1_report et tab1_csv
     
        m = 0
        For j = 0 To jmax
            present = False
            For i = 0 To imax
                If (tab1_csv(0, j) = tab1_report(0, i)) Then
                    present = True
                    indice_present = i
                End If
             Next i
                If present = True Then 'si on a deja les libellés dans le tab_report on ajoute les valeurs correspondantes du csv
                    tab1_report(1, indice_present) = tab1_csv(1, j)
                Else 'sinon on ajoute une colonne à la fin de tab1_report en ajoutant libellé et valeur
                    ReDim Preserve tab1_report(2, imax + 2)
                    tab1_report(0, imax + 1) = tab1_csv(0, j)
                    tab1_report(1, imax + 1) = tab1_csv(1, j)
                    imax = imax + 1
                End If
          Next j
    End Sub
     
    Sub tri1() 'tri du tableau tab_report1 = tab1_csv + tab1_report
     
    Dim ok
    Dim tampon
    Dim tampon2
     
        Do
            ok = True
            For m = 0 To imax - 1
                If (tab1_report(0, m) > tab1_report(0, m + 1)) Then
                    ok = False
                    tampon = tab1_report(0, m)
                    tampon2 = tab1_report(1, m)
                    tab1_report(0, m) = tab1_report(0, m + 1)
                    tab1_report(1, m) = tab1_report(1, m + 1)
                    tab1_report(0, m + 1) = tampon
                    tab1_report(1, m + 1) = tampon2
                End If
            Next m
        Loop While ok = False
     
    End Sub
     
    Sub insertion_colonne_lm1()
     
    Dim p, m, Indice_Est_present, fin_report, fin_report_temp, nb_colonne_ajout As Integer
    Dim Est_present As Boolean
    Set zoneA = Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse1").Range("A1").CurrentRegion
     
    nb_colonne_ajout = 0
    fin_report = imax
    fin_report_temp = nmax
    Indice_Est_present = 3  'A modifier en fonction du reporting =3 attention!!
     
        For m = 0 To fin_report
            For p = 0 To fin_report_temp
                If (tab1_report(0, m) = tab1_report_temp(p)) Then
                    Est_present = True
                    Indice_Est_present = p
                    'afficher la valeur libellés
                    Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse1").Cells(zoneA.Rows.Count, m + 5) = tab1_report(1, m)
                    Exit For
                Else
                   Est_present = False
                End If
            Next p
            If (Est_present = False) Then
                'Ajouter la colonne
                Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse1").Activate
                Columns(Indice_Est_present + 2 + nb_colonne_ajout).Select
                Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromRightOrBelow
                nb_colonne_ajout = nb_colonne_ajout + 1
                'Afficher le nom  du courrier & le nombre de courrier
                Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse1").Cells(1, m + 1) = tab1_report(0, m)
                Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse1").Cells(zoneA.Rows.Count, m + 1) = tab1_report(1, m)
            End If
        Next m
    End Sub
    Donc ca c'est la premiere partie qui marche impec.

    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
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
     
    Dim i
    Dim imax
    Dim j
    Dim jmax
    Dim n
    Dim nmax
    Dim k
    Dim m
    Dim tab2_csv()
    Dim tab2_report()
    Dim tab2_report_temp()
     
    Public Sub traitement_csv2()
     
    'récupération des données du fichier csv jusqu'à "Total_LM"
     
        j = 5
        k = 1
     
        While Workbooks("COUR_LOCAL_" & DateReport & ".csv").Worksheets("COUR_LOCAL_" & DateReport).Cells(j + 1, 1).Rows.Value <> "Total_LM" 'boucle jusqu'à la fin du csv
            If Workbooks("COUR_LOCAL_" & DateReport & ".csv").Worksheets("COUR_LOCAL_" & DateReport).Cells(j + 1, 1).Rows.Value > "R49" Then
                ReDim Preserve tab2_csv(2, k)
                tab2_csv(0, k - 1) = Workbooks("COUR_LOCAL_" & DateReport & ".csv").Worksheets("COUR_LOCAL_" & DateReport).Cells(j + 1, 1).Text
                tab2_csv(1, k - 1) = Workbooks("COUR_LOCAL_" & DateReport & ".csv").Worksheets("COUR_LOCAL_" & DateReport).Cells(j + 1, 2).Text
                k = k + 1
            End If
            j = j + 1
        Wend
        jmax = k - 2
        Workbooks("COUR_LOCAL_" & DateReport & ".csv").Close savechanges:=False
    End Sub
     
    Public Sub traitement_report2() 'les données du reporting (libellés et valeurs) sont mises dans tableau tab2_report
     
        i = 1
        k = 1
     
        While Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse2").Cells(1, i + 1).Value <> "w"
            ReDim Preserve tab2_report(2, k)
            tab2_report(0, k - 1) = Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse2").Cells(1, i + 1).Text
            tab2_report(1, k - 1) = "0"
            i = i + 1
            k = k + 1
        Wend
        imax = k - 2
     
    End Sub
     
    Public Sub traitement2_report_temporaire() '-->gestion du tableau tab2_report_temp afin d'ajouter les colonnes dans le xls
     
        n = 1
        k = 1
        While Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse2").Cells(1, n + 1).Value <> "w"
            ReDim Preserve tab2_report_temp(k)
            tab2_report_temp(k - 1) = Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse2").Cells(1, n + 1).Text
            n = n + 1
            k = k + 1
        Wend
        nmax = k - 2
    End Sub
     
    Sub comparaison_csv2() 'comparaison entre tab2_report et tab2_csv
     
        For j = 0 To jmax
            present = False
            For i = 0 To imax
                If (tab2_csv(0, j) = tab2_report(0, i)) Then
                    present = True
                    indice_present = i
                End If
             Next i
                If present = True Then 'si on a deja les libellés dans le tab_report on lui ajoute les valeurs correspondantes du csv
                    tab2_report(1, indice_present) = tab2_csv(1, j)
                Else 'sinon on ajoute une colonne à la fin de tab_report en appliquant libellé et valeur
                    ReDim Preserve tab2_report(2, imax + 2)
                    tab2_report(0, imax + 1) = tab2_csv(0, j)
                    tab2_report(1, imax + 1) = tab2_csv(1, j)
                    imax = imax + 1
                End If
          Next j
    End Sub
     
    Sub tri2() 'tri du tableau tab_report2 = tab2_csv + tab2_report
     
    Dim ok
    Dim tampon
    Dim tampon2
     
    Do
        ok = True
        For m = 0 To imax - 1
            If (tab2_report(0, m) > tab2_report(0, m + 1)) Then
                ok = False
                tampon = tab2_report(0, m)
                tampon2 = tab2_report(1, m)
                tab2_report(0, m) = tab2_report(0, m + 1)
                tab2_report(1, m) = tab2_report(1, m + 1)
                tab2_report(0, m + 1) = tampon
                tab2_report(1, m + 1) = tampon2
            End If
        Next m
    Loop While ok = False
     
    End Sub
     
    Sub insertion_colonne_lm2()
     
    Dim p, m, Indice_Est_present, fin_report, fin_report_temp, nb_colonne_ajout As Integer
    Dim Est_present As Boolean
    Set zoneB = Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse2").Range("A2").CurrentRegion
     
    nb_colonne_ajout = 0
    fin_report = imax
    fin_report_temp = nmax
    Indice_Est_present = 0
     
        For m = 0 To fin_report
            For p = 0 To fin_report_temp
                If (tab2_report(0, m) = tab2_report_temp(p)) Then
                    Est_present = True
                    Indice_Est_present = p
                    'afficher le nombre de courrier
                    'MsgBox tab2_report(1, m)
                    Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse2").Cells(zoneB.Rows.Count, m + 2) = tab2_report(1, m)
                    Exit For
                Else
                   Est_present = False
                End If
            Next p
            If (Est_present = False) Then
                'Ajouter la colonne
                Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse2").Activate
                Columns(Indice_Est_present + 2 + nb_colonne_ajout).Select
                Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromRightOrBelow
                nb_colonne_ajout = nb_colonne_ajout + 1
                'Afficher le nom du courrier & le nombre de courrier
                'MsgBox tab2_report(0, m) & tab2_report(1, m)
                Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse2").Cells(1, m + 2) = tab2_report(0, m)
                Workbooks("Reporting_Siebel.xls").Worksheets("LocalMasse2").Cells(zoneB.Rows.Count, m + 2) = tab2_report(1, m)
            End If
        Next m
    End Sub
    et ca c'est le code qui est censé faire la meme chose mais qui fait pas la meme chose.. a votre bon coeur m'sieur dame...

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Avant qu'on se mange 200 lignes de code , qques précisions sur les différences constatées seraient bienvenues
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  3. #3
    Membre régulier Avatar de Mugette
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 194
    Points : 80
    Points
    80
    Par défaut
    oui pardon...
    alors dans un premier temps je scan une partie d'un fichier csv je stocke les valeurs dans un tableau.
    ensuite je scan un fichier excel dont je stocke les valeurs dans un autre tableau.
    Je compare les deux tableaux puis je les transforme en 1 seul.
    je le trie, et je l'affiche dans le fichier excel (dans deux onglets différents) que j'ai scanné préalablement...

    voila j'espere avoir ete assez clair.
    En fait, dans le 2eme onglet lorsquil doit créer les colonnes et les afficher pour la premiere fois ca roule mais lorsque l'onglet n'est pas vierge il créer mes colonnes mais ne les remplie pas, et c'est cela que j'aimerais résoudre...

Discussions similaires

  1. Macro excel de recherche dans des Words
    Par Spleenhood dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 09/03/2013, 14h34
  2. Lien dans macro excel
    Par rondepierre dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/03/2013, 17h48
  3. [XL-2003] Problemes dans macro excel
    Par jabranejb dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/11/2012, 10h50
  4. [AC-2003] Importer macro excel complémentaire (.xla) dans Access (.mda)
    Par Mael730 dans le forum Access
    Réponses: 3
    Dernier message: 03/11/2009, 15h36
  5. executer requete creation dans macro excel
    Par soussou92 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/06/2008, 16h57

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