Problème de formule vba...

alias_2003

XLDnaute Occasionnel
Bonjour,
J'ai un problème avec la formule suivante:
Code:
 Nom = Mid((Cells("A1"), 1, Find("" - "", Cells("A1"), 1) - 1)
J'obtiens une erreur "sub ou function non définie" ?!?
Pouvez-vous m'expliquer pourquoi ??
Merci beaucoup,
Bonne journée,
Amicalement
 

Gardien de phare

XLDnaute Accro
Re : Problème de formule vba...

Bonjour,

Si j'ai bien compris...
Code:
nom = Mid([A1], 1, WorksheetFunction.Find(Chr(34) & " - " & Chr(34), [A1], 1) - 1)

Les [] pour dire que l'on parle bien de la valeur de la cellule
Le worksheetfunction pour Find car il s'agit bien de la fonction de feuille de calcul
Le Chr(34) pour gérer le problèmes des double-quotes consécutives (on suppose que le texte cherché est bien
  • " - " (double-quote espace tiret espace double-quote)
  • et non pas
  • - (espace tiret espace)

HTH
 

Dormeur74

XLDnaute Occasionnel
Re : Problème de formule vba...

J'ajouterais que le cells("A1") au lieu du Range("A1") doit faire tousser la machine.
Mais le pire, c'est la syntaxe de la fonction Mid() ; on est loin du compte : Mid ( texte, début, nombre de caractères ).
Utiliser de préférence VBA.Mid( ) à Mid( ) tout seul.
 

Gardien de phare

XLDnaute Accro
Re : Problème de formule vba...

Bonjour le forum, Dormeur,

Ça le Cells, il fait bien tousser le bouzin, sûr. Le "" - "" aussi.

Je n'ai pas cherché à savoir ce que le demandeur voulait faire ! me suis contenté de faire un code sur les mêmes bases, mais qui fonctionne !
 

Dormeur74

XLDnaute Occasionnel
Re : Problème de formule vba...

Bonjour Eriiiic,
J'ai découvert ce pb il y a 3-4 ans. Mes macros fonctionnaient sur certains postes et pas sur d'autres (même VBA et même configuration, bien sûr). Ce problème de référencement est très mal renseigné par Microsoft. J'y ai passé un temps fou. Pourtant si on Google "problème VBA right left trim mid" on a de quoi y passer un week-end complet.

Ce problème semble ne toucher que les fonctions concernant les chaînes de caractères. En imposant la référence à l'aide du préfixe [VBA.] le problème disparaît. Depuis, j'en ai fait une règle générale dans mes codes VBA (pas VB).

Si tu omets le nombre de caractères dans Mid( ), il prend tout depuis le pointeur jusqu'à la fin de la chaîne.
 
Dernière édition:

Dormeur74

XLDnaute Occasionnel
Re : Problème de formule vba...

Dans le cas présent, la fonction Mid est utilisée avec tous ses paramètres, le nombre de caractères étant défini par le Find, non ?

Je ne suis pas certain que tu aies testé ce code. Il ne se lance pas pour une raison très simple :

Nom = Mid((Cells("A1"), 1, Find("" - "", Cells("A1"), 1) - 1)

5 parenthèses en ouverture, 4 en fermeture : ton compilateur devrait arrêter les frais tout de suite. Ce n'est pas un copier-coller.

Ce qui ajouté aux deux autres erreurs de syntaxe signalées [Cells("A1")] et ["" - ""], on peut considérer que la proposition de notre ami Eriiiic est de loin la meilleure solution. Elle est plus courte et elle fonctionne.
 

Discussions similaires

Statistiques des forums

Discussions
313 344
Messages
2 097 337
Membres
106 916
dernier inscrit
Soltani mohamed