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 2003 sur excel 2010 [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 86
    Par défaut macro 2003 sur excel 2010
    Bonjour,

    J'ai réalisé une macro qui fonctionne très bien sous excel 2003, cependant l'utilisateur est sous excel 2010 .
    Voici ma macro :

    Code vb : 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
    Sub centredecout()
     
    Dim WBSource As Workbook, WBDest As Workbook
    Dim file_exist As String
    Dim path As String, file As String, check_cell As String, new_file As String
    Dim j As Long, i As Long, k As Long, last_row As Long, empty_last_row As Long
     
     
     
    file = ActiveWorkbook.Name 'nom du fichier en cours : testmacro ici
    last_row = Worksheets(1).Range("A65536").End(xlUp).Row 'dernière ligne du fichier en cours
    Set WBSource = Workbooks(file) 'workbook source pour le c/c de ligne
     
    path = "C:\Documents and Settings\lcristante\Desktop\test\" 'chemin du dossier global
    Set WBSource = Workbooks(file)
     
    Application.ScreenUpdating = False
    For j = 5 To last_row 'balayage des centre de coût
        check_cell = WBSource.Sheets("Feuil1").Range("AM" & j).Value 'selection de la cellule colonne AM et ligne j
     
     
            file_exist = Dir(path & check_cell & ".xls")
     
     
     Application.DisplayAlerts = False
            If file_exist = "" Then 'si le fichier n'existe pas, on en créé un nouveau
                new_file = path & check_cell
     
                Dim XLBook As Workbook
                Dim XLSheet As Worksheet
                Set XLBook = Workbooks.Add
     
     
                XLBook.SaveAs new_file
                SetAttr new_file & ".xls", vbNormal
                Set WBDest = Workbooks.Open(new_file)
     
     
     
                'on met en place le fichier de destination
                SetAttr new_file & ".xls", vbNormal
                WBSource.Worksheets(1).Rows(3).Copy _
                     Destination:=WBDest.Worksheets(1).Cells(1, 1) 'c/c de l'entête du tableau
                empty_last_row = WBDest.Worksheets(1).Range("A65536").End(xlUp).Row + 1 'on selectionne la dernière ligne vide
                WBSource.Worksheets(1).Rows(4).Copy _
                     Destination:=WBDest.Worksheets(1).Cells(empty_last_row, 1)
                empty_last_row = WBDest.Worksheets(1).Range("A65536").End(xlUp).Row + 1 'on selectionne la dernière ligne vide
                WBSource.Worksheets(1).Rows(j).Copy _
                      Destination:=WBDest.Worksheets(1).Cells(empty_last_row, 1) 'c/c de la ligne
     
                WBDest.Save
                WBDest.Close 'on le ferme
     
            Else
                 file = path & check_cell & ".xls"
                 SetAttr file, vbNormal
                 Set WBDest = Workbooks.Open(file) 'on met en place le fichier de destination
     
                 empty_last_row = WBDest.Worksheets(1).Range("A65536").End(xlUp).Row + 1 'on selectionne la dernière ligne vide
                 WBSource.Worksheets(1).Rows(j).Copy _
                      Destination:=WBDest.Worksheets(1).Cells(empty_last_row, 1) 'c/c
     
                 WBDest.Save
                 WBDest.Close 'on le ferme
        End If
                 Application.DisplayAlerts = True
     
     
     
    Next j
     
    Application.ScreenUpdating = True
    End Sub

    Je ne sais pas du tout ce qu'il faut changer pour que celà fonctionne sous excel 2010.
    Quelqu'un a-t-il une idée ?

    D'avance merci

    talk

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Elle devrait fonctionner... Par contre tu devrais changer tes .range("A65554").end(xlup).row par des .range("A" & rows.count).end(xlup).row

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 86
    Par défaut
    je note, je te tiens au courant.

    merci !

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    je ne vois rien qui ne marcherai pas en 2010 ... ..

    ne change pas l'écriture

    Par contre tu devrais changer tes .range("A65554").end(xlup).row par des .range("A" & rows.count).end(xlup).row
    évite cela S.V.P pour les objets range, row, cells, Rows.. il faut toujours préciser la feuille concerné et ici il n'y as rien devant Rows et tu rajoute une source de bug...

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 86
    Par défaut
    Problème réglé !
    Excel 2003 créé des fichier en .xls alors que excel 2010 les créé en .xlsx
    J'ai donc remplacer les ".xls" par des ".xlsx" !

    Merci d'avoir pris du temps de regarder a mon problème !

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

Discussions similaires

  1. probleme avec des macros sur excel 2010
    Par similitis dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/06/2015, 13h02
  2. [XL-2003] Macro qui ne Fonctionne PAS sur Excel 2003 mais Fonctionne sur Excel 2010
    Par CedResma34 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/01/2014, 11h05
  3. [WD-2010] comment utiliser macros word 2003 sur word 2010
    Par vividouca dans le forum VBA Word
    Réponses: 11
    Dernier message: 25/08/2012, 11h36
  4. convertisseur de macro vba excel 2003 vers excel 2010
    Par mauguin dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/10/2011, 19h13
  5. [VBA] utilisation d'une macro excel 2003 sur excel 2004 for mac
    Par fofika dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/11/2007, 16h30

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