Tester le type d'une cellule

Fermé
Cyril4203 - 9 juil. 2008 à 11:05
Ludivine50 Messages postés 114 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 1 février 2016 - 11 févr. 2009 à 22:02
Bonjour à tous,
Je débute dans le VBA sous Excel. J'ai fait le tour de pas mal de forums je n'ai pas trouvé la réponse à mon problème qui est:

Je fait une fonction qui me renvoie la valeur d'une cellule. Je voudrais faire deux opérations différentes selon le type de la cellule (soit c'est un texte soit c'est un nombre)
Si c'est un texte je veux que ma fonction prenne comme valeur ce texte (en gros que ça change rien! Si c'est un texte
ma fonction sera le même texte)
Sinon (c'est un nombre) je fais une série de calculs (que j'ai déjà trouvé).

Mon problème est donc que je ne sais pas comment faire la comparaison pour savoir le type d'une cellule.
Je vous colle ce que j'ai déjà fait (ne vous préoccupez pas de ce que je fait comme calculs mon probleme se situe sur la partie en gras)

Function Impress(cellule As Range)
application.Volatile
If (le type de la cellule est un texte) Then
Impress = (la valeur de la cellule)

Else
If Range("A1") = "Franc Suisse" Then
Impress = cellule.Value
If Round(Impress, 0) < Impress Then
Impress = (Round(Impress, 0) + 1) & Range("B1")
Else
Impress = Round(Impress, 0) & Range("B1")
End If
Else
Impress = cellule.Value / Range("E1")
If Round(Impress, 0) < Impress Then
Impress = (Round(Impress, 0) + 1) & Range("B1")
Else
Impress = Round(Impress, 0) & Range("B1")
End If
End If
End if
End Function

Je pense que pour vous ça ne devrait poser aucun souci mais pour moi j'arrive pas à aller plus loin.
Pour me justifier je voudrais avoir une seule fonction le fichier final n'étant pas pour moi mais pour quelqu'un qui n'y connait rien en Excel je préfère qu'il utilise qu'une seule fonction.
A voir également:

1 réponse

Ludivine50 Messages postés 114 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 1 février 2016 7
11 févr. 2009 à 22:02
Bonjour à tous,

désolée pour le retard de cette réponse, mais je viens seulement de me poser la même question que toi.
Je pense que depuis tu as trouvé la réponse.

Pour les autres qui chercherait encore,
la commande suivante contrôle si la valeur de la cellule A1 est numérique ou non. Cela renvoie VRAI ou FAUX.

MsgBox IsNumeric(Range("A1"))

A +
1