Equivalent d'une formule en VBA

C

Charles

Guest
Bonjour tout le monde,

Meilleurs voeux pour cette nouvelle année !

J'aimerais écrire l'équivalent de cette formule sous Excel en VBA :

GAUCHE(B133;CHERCHE("-";B133)-1)

Si dans la cellule B133 on a 8,4-16,8 alors il prend tout ce qu'il y a avant le tiret dont il renvoie 8,4

Par avance merci et très bonne journée,

Charles
 
M

Moa

Guest
Salut Charles !

Il y a un moyen simple, quand tu veux écrire un code que tu ne connais pas.

C'est de lancer l'enregistreur de macro et soit de faire ta manip ou d'écrire ta formule.

Et tu as déjà une partie de ta réponse.

Dans ton cas, j'ai fait de cette façon et voilà ce que ça a donné :

Sub Macro1()
Range("E5").Select
ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],SEARCH(""-"",RC[-1])-1)"
Range("E6").Select
End Sub

A savoir j'avais écrit 8,4-16,8 en D5 et ai écrit la formule en E5.

A toi d'adapter !

@ +

Moa
 
D

Dan

Guest
Bonjour,

Tu peux la créer en utilisant l'enregistreur de macro automatique en faisant comme suit :

1. vas dans via menu / outils / macro et choisis "nouvelle macro".
2. Dans ta feuille, mets ton cuseur dans la cellule (ici B133) où la formule doit être placée
3. Ecris ta formule = Gauche ...., puis Enter
4. Arrete ta macro via menu / outils / macro / arreter enregistrement ou via l'icone "Macro" en principe devant toi sur ta feuille.

Pour voir ta macro, tu fais ALT+F11 sur ton clavier. Ceci te montre une fenetre VBA project (a gauche). Ensuite tu ouvres le dossier Module pour visualiser ta macro.

Bon travail

@+

Dan
 
C

Charles

Guest
Merci à tous les deux pour cette aide !
En fait, c'est bien ce que j'ai fait mais la traduction une fois adaptée ne marchait pas, c'est à dire qu'il me traduisait Cherche par Search (comme vous apparement) mais qd je lance la macro il me dit ne pas comprendre Search !
Avec InStr ca a l'air de marcher , qu'en pensez-vous ?
 
C

Charles

Guest
Ca y'est, voilà en fin de compte ce que ca donne !

Arrivee = Left(Range("B133"), InStr(Range("B133"), "-") - 1)

Depart = Right(Range("B133"), Len(Range("B133")) - InStr(Range("B133"), "-"))

Si on rentre une tranche horaire type 9h-13h30, ca permet d'isoler le 9h (Arrivee) et le 13h30 (Depart). Je rajoute ca pour quiconque intéressé par ça :)

A bientôt
 

Discussions similaires

Réponses
17
Affichages
1 K

Statistiques des forums

Discussions
313 064
Messages
2 094 948
Membres
106 134
dernier inscrit
Sedova