[Déplacé .Net --> VBA] Excel (VBA)

BABUDROME Messages postés 151 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 19 avril 2016 - 1 avril 2010 à 09:32
BABUDROME Messages postés 151 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 19 avril 2016 - 9 avril 2010 à 21:34
Pourquoi Trim, STR, Date ne sont pas reconnus dans des macros sous EXCEL ?
Un tableur créé avec de telles macros fonctionne correctement sur mon PC, mais les termes DATE, STR, TRIM (et peut-être d'autres) font ERROR sur un autre PC, lequel a le même Office PRO (même CD) installé.

Peut-on savoir quels Composants et DLL utilise le tableur sur mon PC, pour, éventuellement les transférer sur le second PC ?

Remerciements anticipés.

bab

PS : J'ai déjà eu ce genre de problème avec VB6, mais il a disparu et je ne sais pourquoi...

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
1 avril 2010 à 09:40
BONJOUR
aussi
Parce que tu ne dois pas utiliser les mots clé du langage pour nommer tes propres fonctions/sub/variables.
Il suffit qu'un de ces noms soit utilisé pour provoquer des erreurs de ce type.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
BABUDROME Messages postés 151 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 19 avril 2016
1 avril 2010 à 11:10
Bonjour à toi.
Aucun de ces mots n'est utilisé autrement que la règle le recommande.
Exemple :
m="03"
d = "01/01/" + m
vm = Val(m): If vm < 10 Or vm > 99 Then GoTo 1
aa = Right(m, 2)
FN = "RTT-20" + aa
a_1 = Right(Trim(Val(aa) + 99), 2)
...

D'autre part, le projet EXCEL, fonctionne correctement sur mon PC et pas sur un autre de même config, avec le même Office PRO.

Merci de ton message et du temps que tu as consacré à me répondre. et désolé si ça ne résout rien pour moi.

A+, Bab
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
1 avril 2010 à 12:10
Bonjour

Entre les 2 postes il peut y avoir une différence de bibliothèques chargés qui est à l'origine du problème
Sous VBA vérifier sous "Outil /References" d'avoir les même bibliothèques chargées.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
1 avril 2010 à 13:24
Et le fabuleux code que tu présentes ici est le seul code de ton projet ?
Parce que un problème de nommage peut exister ailleurs et perturber un autre code.
Pense aussi à moderniser ta technique de programmation : QBasic est récolu !
Exemple
    Dim m As String
    Dim d As String
    Dim vm As Integer
    Dim aa As String
    Dim FN As String
    Dim a_1 As String

    m = "03" 
    d = "01/01/" + m        ' & et pas + pour une chaine
    vm = Val(m)  ' ici, "vm" vaudra 3 donc le test suivant sera toujours vrai (bizarre)
    If vm < 10 Or vm > 99 Then GoTo 1 ' "1" est un numéro de ligne A éviter.
                            ' Utilise plutôt les labels --> Label1 ou Recommence
    aa = Right(m, 2) 
    FN = "RTT-20" + aa      ' & et pas + pour une chaine
    a_1 = Right(Trim(Val(aa) + 99), 2)
    '  Trim(Val(aa) + 99) : Pas judicieux : Trim ne s'applique qu'à des chaines
    ' -->  Trim(CStr(Val(aa) + 99))
    ...
Ce qui peut se résumer aussi :
    Dim m As String
    Dim d As String
    Dim aa As String
    Dim FN As String
    Dim a_1 As String

    m = "03" 
    d = "01/01/" & m
    If Val(m) < 10 Or Val(m) > 99 Then GoTo Label1
    aa = Right(m, 2) 
    FN = "RTT-20" & aa
    a_1 = Right(Trim(CStr((Val(aa) + 99)), 2)
    ...
Exemple d'utilisation de label de saut
Recommence:
    maCondition = False
    If maCondition = False Then Goto Recommence
Suite:

!!!! Ne lance surtout pas ce dernier bout de code, il bloquerait ta machine puisque rien ne modifie "maCondition" et il bouclerait sans fin.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
1 avril 2010 à 13:56
Autre astuce :
Quand tu utilises des fonctions fournissant des résultats sous forme de chaine (*), tu peux ajouter un $ derrière la fonction : VB interpète différemment cette commande et cela peut peut-être résoudre ton problème :
Exemple : Trim$, Right$, Left$, Mid$, Chr$ ...

(*) D'où l'intérêt de bien maîtriser les types des variables, en passant notamment par des déclarations
0
BABUDROME Messages postés 151 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 19 avril 2016
9 avril 2010 à 21:34
Bonjour Jack
Ça y est, le pb. est résolu.
Il m'a fallu installé VB6 sur l'autre Pc. J'ignorais sa nécessité avec des routines écrites sous EXCEl.

Toutefois, Grand Merci de tes conseils principalement pour les définitions des types de variables; Cela a permis, d'abord un gain en volume, et des corrections d'erreurs de conversions.

Dorénavant toutes mes variables seront définies dés le début d'écriture de mes programmes.

A+ peut-être. Bab

PS : Sais-tu comment connaître le dossier parent d'un tableur ouvert ?
Le verbe Application donne le dossier où se trouve EXCEL.EXE, mais où se trouve le *.XLS ?
Si tu as une idée... C'est pour accéder à des documents stockés dans le même doxxier que le *.XLS.

Merci d'avance.
0
Rejoignez-nous