autodidacte33
Messages postés10Date d'inscriptionmercredi 17 janvier 2007StatutMembreDernière intervention20 juin 2008
-
27 déc. 2007 à 12:22
autodidacte33
Messages postés10Date d'inscriptionmercredi 17 janvier 2007StatutMembreDernière intervention20 juin 2008
-
1 janv. 2008 à 18:16
Salut;
Voila un petit problème pour les initiers bien sur.
En VBA sous excel
Ma question est:
Ce qui m'intéresse c'est le nombre dans la cellule (x).
Comment comparer si c'est sont égaux une cellule qui peut contenir par exemple « ETUDE 16» ou «T.PUB 02 »... Avec une variable numérique qui peut contenir que des nombres (01, 02?.16....ou 100)?
Ou carrément Comment extraire un nombre qui se trouve dans une chaîne de caractère afin de pouvoir le sommé avec une variable SINGLE ?
cs_darunia
Messages postés354Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention24 mars 20112 27 déc. 2007 à 13:04
Salut,
La 1ere chose a savoir est la position du nombre dans la chaine pour pouvoir l'extraire. On dirait que dans tes exemple le nombre est toujours apres 1 espace. Donc extrait le nombre qui est apres l'espace :
Dim ValeurCellule as String
Dim strNombre as String
Dim SpaceIndex as Integer
Dim intNombre as Integer
zigo34
Messages postés6Date d'inscriptionjeudi 21 septembre 2006StatutMembreDernière intervention27 décembre 2007 27 déc. 2007 à 13:45
salut,
en complément à la réponse de darunia, je te donne la manière que j'utiliserai :
Public Sub X()
Dim ValeurCellule As String
Dim strNombre As String
Dim SpaceIndex As Integer
Dim caractere As String
Dim intNombre As Integer
Dim sngNombre As Single
strNombre = ""
For SpaceIndex = 1 To Len(ValeurCellule)
caractere = Mid$(ValeurCellule, SpaceIndex, 1)
If caractere >= "0" And caractere <= "9" Then
strNombre = strNombre + caractere
End If
Next
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 27 déc. 2007 à 14:21
et moi, je l'écrirais ainsi :
Private Sub Command1_Click()
toto = "T.PUB 02"
titi = toto
For i = 1 To Len(titi)
quoi = Mid(titi, i)
If IsNumeric(Mid(quoi, 1)) Then
nb = Mid(quoi, 1, 1) & Val(Mid(quoi, 2))
Exit For
End If
titi = quoi
Next
MsgBox nb
End Sub
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 27 déc. 2007 à 14:23
ou si tu ne sais pas a priori si le nombre se trouve au début, à la fin, après un espace, avant un tiret, ...
Cette fonction-ci te trouve le premier nombre positif dans ta chaine de caractères.
Function extraireInt(chaine As String) As Integer
Dim sTemp As String
Dim resultat As String
Dim firstIndex As Integer, lastIndex As Integer
For i = 1 To Len(chaine)
sTemp = Mid$(chaine, i, 1)
If IsNumeric(sTemp) Then
firstIndex = i
lastIndex = i - 1
While IsNumeric(Mid$(chaine, i, 1)) And i <= Len(chaine)
lastIndex = lastIndex + 1
i = i + 1
Wend
Exit For
End If
Next i
If firstIndex > 0 Then
resultat = Mid$(chaine, firstIndex, lastIndex - firstIndex + 1)
Else
resultat = -1
End If
extraireInt = CInt(resultat)
End Function
Sub test()
MsgBox extraireInt("azea8ze445.")
End Sub
Manu --------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
autodidacte33
Messages postés10Date d'inscriptionmercredi 17 janvier 2007StatutMembreDernière intervention20 juin 2008 1 janv. 2008 à 18:16
Merci beaucoup, vous êtes des anges, je vous souhaite sincèrement plein de bonheur en ce nouvel An 2008.
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
J’ai essayé tous les programmes proposés, ça marche à la perfection.
Pour le moment le Prg de Doruna me convient bien, efficace et surtout rapide à l’exécution (à mon avis).
*NB : aux autres utilisateurs, les chiffres après l’espace ne dépassent pas plus que (05 caractères)?
-Erreuer d’exécution ‘6’
-Dépassement de capacité.
Ça me convient, j’en ai besoin que de trois (03 caractères) ? Novice comme je suis, je ne peux donner d’explication.
Celui de Zigo, pertinent et affiche même les chiffres au milieu d’un texte (je travaille déjà avec), parce que là où je travail c’est le bazzard. Il ne me reste que de séparer les chiffres par un espace (ex : marche N°14 situation N°01/07) en (14 01 07).
Celui de Jmfmarques, j’ai converti « nb » en numérique (que j’ai appris içi)si non, nombre erroné si chaîne et un peu plus longue? , c’est beau à le voir en plein exécution « pas à pas » comme celui de Zigo34 il boucle sur le texte, ce qui le rend un peu moins rapide Vu que mon Prg grandi à petit pas, mais c’est exacte.
Enfin Econ, c’est super c’est exactement ce que je cherchai dans d’autre sous programme. J