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 :

macros 2003 inactives sous 2007 [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Par défaut macros 2003 inactives sous 2007
    Bonjour,

    j'ai créé un fichier sous excel 2003 avec de multiples macros qui me donne entière satisfaction. Pour des raisons indépendantes de ma volonté, je dois passer à excel 2007 et je découvre que ces macros ne fonctionnent plus. j'ai commencé à réparer le premier bug (une définition de variable), mais au troisième j'ai laissé tomber, n'ayant pas envie de me retaper toute l'écriture (deux mois de boulot).

    Y a t-il une solution miracle ?

    Merci

  2. #2
    Membre éprouvé
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Par défaut
    ...
    Je ne vois pas comment il pourrait exister une solution miracle.
    Si ce n'est avoir un code irréprochable en 2003.

    Les changements de versions (surtout chez microsoft) entrainent toujours des bugs soit parce que le code est plus rigoureux et ne laisse plus passer des énormités soit pour des petits changements de syntaxe ou d'adresse de référence.

    Il vaut mieux venir sur ce forum avec un problème précis sur lequel on pourra plancher avec toi parce que la ...

    Sinon pour les miracles s'adresse à un dieu quelconque des fois ca marche parait il

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Par défaut
    Par solution miracle, j'entendais une manip à faire sur 2007 lui permettant de lire sans problème le code écrit avec 2003. J'ai réussi à corriger les premiers bugs arrivés, mais au bout du 4ème, je me suis demandé si il n'y avait pas plus rapide.

    L'autre question est de savoir si, une fois réparé pour 2007, mon code tournera toujours sur 2003 !

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    Il y a quelque truc qui ne fonctionneront pas par exemple si tu utilise fileschearch (peut être d'autre je n'utilise pas souvent 2007).

    Mais sans avoir ton code difficile de répondre là ou david_atx à, je pense, raison c'est qu'un "bon" code passe (a condition de ne pas utiliser les quelque fonction disparu)

    Au passage regarde quand même si sous 2007 tu n'est pas en option explicite. Explique les bug que tu as du corrigé pour voir de quel type ils sont

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Par défaut
    - des variables à définir.

    - un bout de code pour mettre des mots en minuscule puis la première lettre en majuscule. Il m'indique que le projet est introuvable, comme si le terme de "cell" lui était inconnu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    'mettre les noms en minuscule
     
          Worksheets("creation").Range("A3:A40").Select
            For Each Cell In Selection
                Cell.Value = LCase(Cell.Value)
            Next Cell
     
    'mettre la première lettre des nom et prenom en majuscule
     
            For Each Cell In Selection
    Cell.Value = Application.WorksheetFunction.Proper(Cell.Value)
    Next Cell
    Je reconnais sans mal que mon écriture est loin d'être propre, il s'agit de mon premier vrai travail avec VBA excel, mais il tournait correctement ...

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Le terme cell lui est effectivement inconnus et c'est normale
    il connait cells pas cell.
    Dans ton exemple il faut mettre
    pour déclarer ta variable
    Met ceci au tout début d'un module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Sub Macro8()
    For Each Cell In Range("A1:A5")
    Cell = "Bonjour"
    Next Cell
    End Sub
    Tu voit il ne connait pas cell, déclare le comme une variable et ca passe

    Je suis étonné que ton programme tourne en 2003 tu devrais utiliser l'option explicite quand tu programme ca évite ce genre de désagrément. Car la tu t'en remet à l'ordinateur pour essayer de "comprendre" ce que tu veux faire.

    Un peu de lecture
    Fondements sur les variables et les constantes

    Bonne chance mais surtout bon courage

  7. #7
    Membre éprouvé
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Par défaut
    bon moi perso j'aime pas les for each truc dans machin meme si c'est bien pratique
    puisque ca plante souvent pour des erreurs de syntaxe
    Là à mon avis c'est typiquement le cas

    si ta range est fixe (ce qui semble etre le cas) un for est beaucoup plus simple et sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub test()
    For i = 3 To 40
    cel = Sheets("Feuil1").Cells(i, 1).Value
    If cel = "" Then
    Exit Sub
    Else
    debut = UCase(Left(cel, 1))
    fin = LCase(Right(cel, Len(cel) - 1))
    Sheets("Feuil1").Cells(i, 1).Value = debut & fin
    End If
    Next i
     
    End Sub
    ca marche chez moi
    d'ailleurs j'ai pas compris mais le cel = debut & fin ne marchait pas ...

    Moi par contre je suis un gros cochon j'ai rien déclarer :p

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

Discussions similaires

  1. Macro Excel 2003 ne fonctionne plus sous 2007/2010
    Par leloup84 dans le forum Général VBA
    Réponses: 0
    Dernier message: 13/11/2013, 19h41
  2. [WD-2007] Macro 2003 ne fonctionne pas sous 2007
    Par ZoRm33 dans le forum VBA Word
    Réponses: 5
    Dernier message: 10/08/2012, 11h29
  3. Erreur réception de mail sous Outlook 2003-MS Project 2007
    Par brice45 dans le forum Microsoft Office
    Réponses: 3
    Dernier message: 15/09/2008, 18h13
  4. Blocage des macros 2003-2007
    Par Vinz1241 dans le forum Sécurité
    Réponses: 1
    Dernier message: 09/12/2007, 21h56
  5. [2007-VBA]Pb de macro d'ACCESS 2003 sur ACCESS 2007
    Par BORDEAUX4 dans le forum Access
    Réponses: 6
    Dernier message: 04/04/2007, 10h24

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