Pb function en VBA excel
Fermé
Patosh31
Messages postés
4
Date d'inscription
vendredi 7 septembre 2012
Statut
Membre
Dernière intervention
5 avril 2019
-
2 nov. 2016 à 18:49
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 3 nov. 2016 à 08:27
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 3 nov. 2016 à 08:27
A voir également:
- Pb function en VBA excel
- Liste déroulante excel - Guide
- Mise en forme conditionnelle excel - Guide
- Word et excel gratuit - Guide
- Si et excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
2 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 258
2 nov. 2016 à 19:15
2 nov. 2016 à 19:15
Bonjour,
Ben oui, si tu écris n'importe quoi ça ne risque pas de fonctionner.
Il faut te renseigner et apprendre au minimum les bases.
Il y a tellement d'erreurs et d'incongruités qu'il faudrait 3 page pour t'expliquer.
Voilà à quoi elle pourrait ressembler :
A mettre dans un module Standard
Et dans une cellule :
eric
Ben oui, si tu écris n'importe quoi ça ne risque pas de fonctionner.
Il faut te renseigner et apprendre au minimum les bases.
Il y a tellement d'erreurs et d'incongruités qu'il faudrait 3 page pour t'expliquer.
Voilà à quoi elle pourrait ressembler :
Function MaSomme(nom As Range) As Double
' déclaration des variables
Dim un As Double
Dim deux As Double
Dim trois As Double
Dim quatre As Double
Dim cinq As Double
Dim somme As Double
' découpage lettre à lettre
nom1 = Mid(Range("b1"), 1, 1)
nom2 = Mid(Range("b1"), 2, 1)
nom3 = Mid(Range("b1"), 3, 1)
nom4 = Mid(Range("b1"), 4, 1)
nom5 = Mid(Range("b1"), 5, 1)
'définition d'un score s'il y a correspondance ou pas
If nom1 = "T" Then un = 0.5 Else un = -0.25
If nom2 = "G" Then deux = 0.5 Else deux = -0.25
If nom3 = "T" Then trois = 0.5 Else trois = -0.25
If nom4 = "A" Then quatre = 0.5 Else quatre = -0.25
If nom5 = "A" Then cinq = 0.5 Else cinq = -0.25
MaSomme = un + deux + trois + quatre + cinq
End Function
A mettre dans un module Standard
Et dans une cellule :
=masomme(B1)
eric
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
858
3 nov. 2016 à 00:41
3 nov. 2016 à 00:41
Bonsoir à tous,
Sauf si tu dois absolument utiliser ta fonction avec les Mid et les If, tu peux envisager de faire des économies de caractères :
Pour le reste, tu suis les indications de eriiic.
Cordialement
Sauf si tu dois absolument utiliser ta fonction avec les Mid et les If, tu peux envisager de faire des économies de caractères :
Function MaSomme_bis(nom As Range) As Double MaSomme_bis = -1.25 - 0.75 * ((nom Like "T*") + (nom Like "?G*") + (nom Like "??T*") + (nom Like "???A*") + (nom Like "????A")) End Function
Pour le reste, tu suis les indications de eriiic.
Cordialement
3 nov. 2016 à 08:27
remplacer :
nom1 = Mid(Range("b1"), 1, 1)
nom2 = Mid(Range("b1"), 2, 1)
nom3 = Mid(Range("b1"), 3, 1)
nom4 = Mid(Range("b1"), 4, 1)
nom5 = Mid(Range("b1"), 5, 1)
par :
nom1 = Mid(nom, 1, 1)
nom2 = Mid(nom, 2, 1)
nom3 = Mid(nom, 3, 1)
nom4 = Mid(nom, 4, 1)
nom5 = Mid(nom, 5, 1)
Heureusement que JvDo a l'oeil ;-)