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 :

Selon la version, la fonction Mid, right, left ne fonctionne pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Par défaut Selon la version, la fonction Mid, right, left ne fonctionne pas
    Bonjour,
    Selon la version que j’utilise, sur mon pc la version 2010, chez moi une 2007et mes collègues des 2003, la fonction Mid, right, left ne fonctionne pas,
    Il me demande de vérifier les références, et elles sont pourtant toutes bien là
    J’ai lus des commentaires là-dessus, mais je ne peux par remettre les retrouver,

    Quelqu’un a une idée ou a déjà rencontré ce problème ?

    Merci par avance de vos réponses

    Henri

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est très curieux ce que tu racontes là parce-que j'utilise ces fonctions sans problèmes peu importe les versions .
    Peux-tu publier le code, le problème vient sans doute d'ailleurs,
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Par défaut
    Par exemple :
    Avec ce chemin de répertoire dans une cellule de Worksheets("Parametrage").Range("D1 »)
    \\stg01\DSIDoc\03 - Systèmes Applicatifs\08 CTI\00 A Classer\40-Projets\CTIv2-EC-2012-StatsMatin\zip_matin\Stats_Matin_TEL_Appels_20120927.csv

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     long_chemin = InStrRev(Worksheets("Parametrage").Range("D1"), Chr(92))                  'Me donne la position du dernier slash
    chemin_zip = Left(Worksheets("Parametrage").Range("D1"), long_chemin - 1)               'Me donne le chemin du repertoire distant
    'nom_fichier = Trim(Mid(Worksheets("Parametrage").Range("D1"), long_chemin + 1, 100))   'Me donne le nom du fichier
    'fichier 1
    nom_fichier = Trim(Mid(Worksheets("Parametrage").Range("D1"), long_chemin + 1, 100))    'Me donne le nom du fichier
    FileCopy Worksheets("Parametrage").Range("D1"), chemin_zip & "\tmp\" & nom_fichierMerci par avance de vos réponses
    Sur mon 2010 c’a fonctionne et ailleurs non, et pas de référence manquante !

    Merci de votre aide,

    Henri

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je suppose que tu as utilisé le débogueur.
    A quelle ligne se situe le problème ?
    A la ligne 2 avec l'instruction Left ou à la ligne 5 avec Mid.
    A propos de l'instruction Mid une petite remarque et le problème vient peut-être de là si le nombre de caractères du chemin + non de fichier est supérieur à 100 dans une des version il y aura un problème.
    L'instruction Mid dans VBA n'a pas tout à fait le même comportement que la formule Mid dans Excel
    Dans Excel, il faut préciser le nombre de caractères que l'on prend (3ème argument) alors que dans VBA, le 3ème argument est facultatif et prend tous les caractères qui suivent si ignoré. C'est bizarre mais voilà, les développeurs de chez Microsoft n'harmonise pas leurs produits (Comme OuiNon dans Access au lieu de SI).
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Par défaut
    Bien sûr j’ai utilisé le débugger et je me casse les dents sur le premier Mid(xxx trouv, mais si c’a avait été un Right ou un left, j’aurai eu le même problème,
    Bien plus surprenant encore, quand je fais F2 dans l’environnement de dev VBA je retrouve bien ces fonctions et je peux les remplacer par ce que j’avais écrit à la main
    Comme je le dis plus haut, mid, rigth et left me font le même problème, sous 2007 et 2003 et pas mon 2010

    J’ai 1300 lignes dans mon module et j’utilise ces fonctions une vingtaine de fois
    Quand j’ecris 100 dans << Trim(Mid(Worksheets("Parametrage").Range("D1"), long_chemin + 1, 100)) >> c’est pour avoir de la marge, alors que c’a ne dépasse pas 30 char, et c’est pour ça que j’ai mis un trim devant,

    A suivre !

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Alors je ne comprends pas. Comme je l'ai précisé dans mon premier post, j'ai beaucoup de procédures qui tourne avec ces fonctions aussi bien en 2003, qu'en 2007 et 2010. Par contre toutes mes versions sont en 32 bits, je ne sais pas si c'est le cas chez toi.
    Qu'est-ce qui ne vas pas en fait, il coupe plus de caractères dans une version que dans l'autre ?
    Y a-t-il un message d'erreur ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Citation Envoyé par Henri-gp Voir le message
    Il me demande de vérifier les références, et elles sont pourtant toutes bien là

    Bonjour,

    Le souci n'est pas celles qui sont là mais celles qui seraient manquantes, donc dans outils Références, si tu as sur le poste xx des références manquantes, décoches les ! C'est une des raisons de ce phénomène....

    cordialement,

    Didier

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Par défaut
    Je travaille sur 2010 et je dois rendre ce classeur compatible avec 2003 et 2007 et quand j’enregistre, j’ai une fenêtre avec ce genre de message (image jointe) :

    Microsoft Excel – Vérificateur de comptabilité
    Les fonctionnalités suivantes de ce classeur ne sont pas prises en charge dans les versions antérieures d’Excel, ces fonctionnalités seront peut-être perdues ou dégradées . . . . . . .

    C’est là que c’a coince

    Merci de vos réponse (et de votre patience)

    Henri
    Images attachées Images attachées  

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le message que tu affiches est normal et n'est pas responsable de ton problème.
    En effet, lorsque depuis une version 2007, 2010 l'on sauve un fichier sous version 97-2003 c'est à dire suffixée xls c'est le genre de message que l'on obtient et de plus dans ta barre des titres tu va visualiser le nom du fichier suivi du message Mode de compatibilité entouré de crochets monFichier.xls [Mode de compatibilité].
    Pour ma part, tous mes tests sont d'abord fait sous la version 2003 pour m'assurer de leurs compatibilités avec les 3 versions.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Par défaut
    Bonjour à tous,

    En fait mon problème se limitait à la librairie Microsoft Outlook XX.0 Object Library,
    Il me suffisait de changer la version en fonction de celle d’Excel,
    J’aurai largement préférer travailler en mode ascendant plutôt que le contraire.

    L’adaptation aux différentes versions d’Excel est un point que j’aimerai approfondir, notamment les déclarations de référence.

    Merci à tous et bonne journée,
    Henri

  11. #11
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    tu avais donc des références manquantes...

    en regardant quelques lignes plus bas tu pouvais voir ce sujet :

    Supprimer une référence 2010

    il y a de nombreuses occurrences dur DVP à ce niveau, bon courage,

    cordialement,

    Didier

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Par défaut
    Non justement elles n’étaient pas marquées comme références manquantes, mais pas la bonne version,

    Microsoft Outlook 14.0 Object Library avec Excel 2010
    Microsoft Outlook 11.0 Object Library avec Excel 2003 et 2007

    Henri

  13. #13
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    L’intérêt du forum, au-delà de dépanner dans l’immédiat des contributeurs, est surtout de constituer une base de connaissance pour tous les lecteurs présents et futurs et notamment sur les comportements bizarroïdes avérés pour faire avancer le schmilblick

    Donc, peux-tu préciser le contexte afin de tenter de cerner au mieux possible.

    Tu es en VBA sous Excel
    1. Tes fonctions de chaînes n’interviennent que sous Excel ou tu pilotais Outlook au travers du VBA Excel ?
    2. Tu mentionnes Microsoft Outlook 11.0 Object Library avec Excel 2003 et 2007, mais pour 2007, ça devrait être Microsoft Outlook 12.0 Object Library, ce qui voudrait dire que tu aurais sur ce poste Excel 2007, mais Outlook 2003 ?

    etc....

    Bref, pour cerner le problème par rapport à l’avenir, il serait bien de décrire précisément ton contexte.

    Pour sa résolution, c’est clair, il faut voir le lien que j’ai indiqué et te mettre à travailler en Late Binding, ce sera la solution la plus stable.

    cordialement,

    Didier

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Par défaut
    Je récupère 5 fichiers *.csv sur un réseau d’entreprise (de 50 à 5000 lignes, 4 à 40 champs)
    Je mouline ces cinq fichiers avec pleins de macros pour en faire une jolie feuille de résultat
    J’ai mis un maximum de données dans des tableaux pour optimiser le temps d’exécution
    J’envoie par mail cette jolie feuille à 60/80 utilisateurs selon la journée à l’aide de CDO (d’où l’appelle à Microsoft Outlook XX.0 Object Library)
    Je zip le tout dans un autre répertoire réseau afin d’avoir une trace

    Le tout peut se faire en ouvrant mon classeur ou en ligne de commande,
    Pour arriver à ce résultat, j’utilise trois feuilles de calcul, deux modules et un module de classe pour un total de 1300 ligne de code,

    On m’a imposé la version 2010 alors que tous travaille avec 2003 (pour me faciliter la vie je suppose)

    Et après ceci : un bon Week-end à tous, sans oublier de vous remercié.

    Henri

  15. #15
    Invité de passage
    Homme Profil pro
    Statisticien - Traitements des données
    Inscrit en
    Août 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Statisticien - Traitements des données

    Informations forums :
    Inscription : Août 2009
    Messages : 1
    Par défaut Pb Mid fonctionne pas -Résolu-
    J'ai eu ce problème de "Mid" qui ne fonctionne pas. En regardant les références j'ai constaté qu'une référence nommée "Microsoft CDO..." était manquante. J'ai trouvé sous mon nouveau windows 8 une référence nommée "Microsoft CDO windows 2000 library". Je l'ai coché, et décoché la première et cela fonctionne.
    Je précise : j'ai rencontré le problème avec outlook 2013 sous windows 8.


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

Discussions similaires

  1. Une fonction sous Excel 2007 ne fonctionne pas sous Excel 2003
    Par Dryss51 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 27/07/2007, 09h09
  2. La fonction eye (512*512) ne fonctionne pas
    Par Verboz dans le forum MATLAB
    Réponses: 6
    Dernier message: 01/03/2007, 01h26
  3. La fonction "source" de MySQL ne fonctionne pas
    Par muad'dib dans le forum JDBC
    Réponses: 14
    Dernier message: 15/01/2007, 18h25
  4. Fonction Quoted printable qui ne fonctionne pas.
    Par leCcsympas dans le forum C
    Réponses: 3
    Dernier message: 13/01/2007, 19h54
  5. fonctions remove et rename ne fonctionnent pas ?
    Par FamiDoo dans le forum MFC
    Réponses: 29
    Dernier message: 30/06/2006, 18h02

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