Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1131 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  opération sur chaîne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

opération sur chaîne

n°1386310
blase
Posté le 13-06-2006 à 11:13:48  profilanswer
 

Bonjour, je voulais savoir si quelqu'un pouvait me dire comment il s'y prendrait en vba (sous excel) pour
récupérer les deux nombres en gras en sachant que les caractères avant le nombre peut varier. exemple
 
HIE/RO/PQIW03.50/050N002      
ou
HIE/RO/PW04.52/1244N1    
 
Merci d'avance...

mood
Publicité
Posté le 13-06-2006 à 11:13:48  profilanswer
 

n°1386315
_darkalt3_
Proctopathe
Posté le 13-06-2006 à 11:19:24  profilanswer
 

je pense que quelqu'un peut te le dire, en effet [:god]

n°1386317
blase
Posté le 13-06-2006 à 11:21:33  profilanswer
 

merci de ton aide précieuse

n°1386335
Paul Hood
Posté le 13-06-2006 à 11:36:27  profilanswer
 

blase a écrit :

Bonjour, je voulais savoir si quelqu'un pouvait me dire comment il s'y prendrait en vba (sous excel) pour
récupérer les deux nombres en gras en sachant que les caractères avant le nombre peut varier. exemple
 
HIE/RO/PQIW03.50/050N002      
ou
HIE/RO/PW04.52/1244N1    
 
Merci d'avance...


 
 
C'est le principe pour trouver les caractères en gras. En suppossant que ton texte est en "A1"
    For i = 1 To Len(cells(1,1))
        If Cells(1, 1).Characters(i, 1).Font.Bold Then msg = msg & Mid(cells(1,1) i, 1)
    Next
    MsgBox msg
 
Bon courage

n°1386341
blase
Posté le 13-06-2006 à 11:41:53  profilanswer
 

Pardon, je me suis mal exprimé. C'était pour montrer les nombresque je devais prendre. il n'y a rien en gras dans le fichier excel. Il faudrait pouvoir supprimer toutes les lettres et les derniers chiffres à la fin pour récupérer ces deux nombres. mais merci

n°1386356
Paul Hood
Posté le 13-06-2006 à 11:54:44  profilanswer
 

blase a écrit :

Pardon, je me suis mal exprimé. C'était pour montrer les nombresque je devais prendre. il n'y a rien en gras dans le fichier excel. Il faudrait pouvoir supprimer toutes les lettres et les derniers chiffres à la fin pour récupérer ces deux nombres. mais merci


 
...Si tu sais pas décrire la régle tu vas avoir du mal à la coder
 
Avant le nombre que tu cherches il n'y a que des alpha (a,b, c..z) ?
Ton nombre comprend toujours un "." ?
La taille de ton nombre est-il le même ?
 
enfin .. juste un peu plus de précision dans ta demande et l'espoir est permis!!

n°1386377
knakes
Posté le 13-06-2006 à 12:11:39  profilanswer
 

a mon avis faut se baser sur le /
et prendre 5 avant (point compris) et après jusqu'a la première lettre.  
 
C'est ça ?

n°1386430
_darkalt3_
Proctopathe
Posté le 13-06-2006 à 13:05:06  profilanswer
 

non, ca dépend de la grammaire de chaque string:

Citation :

les caractères avant le nombre peut varier


(bon, ok, c'est pas super français mais on comprend)

n°1386462
scoobidoob​idooooo
Posté le 13-06-2006 à 13:21:14  profilanswer
 

Se baser sur le /, trouver le caractère non numérique avant et après et lire tout ce qu'il y a entre...

n°1386483
Paul Hood
Posté le 13-06-2006 à 13:36:43  profilanswer
 

scoobidoobidooooo a écrit :

Se baser sur le /, trouver le caractère non numérique avant et après et lire tout ce qu'il y a entre...


 
Est-ce que ca répond à ta règle !!
 
Private Sub CommandButton1_Click()
    Dim TrouveNombre As Boolean
 
    TrouveNombre = False
    For i = 1 To Len(Cells(1, 1))
        car = Mid(Cells(1, 1), i, 1)
        If Asc(car) < 58 And Asc(car) > 47 Then
            TrouveNombre = True
            msg = msg & car
        Else
            If (car = "/" Or car = "." ) And TrouveNombre Then
                msg = msg & car
            Else
                If TrouveNombre Then Exit For
            End If
        End If
    Next
    MsgBox msg
End Sub
 
A plus ?

mood
Publicité
Posté le 13-06-2006 à 13:36:43  profilanswer
 

n°1386511
kiki29
Posté le 13-06-2006 à 14:13:02  profilanswer
 


Option Explicit
 
Private Sub Essai()
Dim s As String
    s = "HIE/RO/PQIW03.50/050N002"
    Debug.Print FormaterChaine(s)
    s = "HIE/RO/PW04.52/1244N12"
    Debug.Print FormaterChaine(s)
End Sub
 
Private Function FormaterChaine(ByVal Chaine As String) As String
Dim ar As Variant
Dim i As Integer, j As Integer, L As Integer
Dim strTmp As String, Ch As String * 1
     
    ar = Split(Chaine, "/" )
    strTmp = ""
    For i = 2 To UBound(ar)
        L = Len(ar(i))
        For j = 1 To L
            Ch = Mid(ar(i), j, 1)
            If Asc(Ch) = 78 Then Exit For
            If Asc(Ch) <= 65 Or Asc(Ch) >= 90 Then
                strTmp = strTmp & Ch
            End If
        Next
        ar(i) = strTmp
        strTmp = ""
    Next
    FormaterChaine = ar(2) & "/" & ar(3)
End Function

n°1386585
blase
Posté le 13-06-2006 à 15:20:15  profilanswer
 

Merci pour vos réponse, j'étais sur un autre truc. Je vais essayé et vous redis. Merci d'avance

n°1386714
kiki29
Posté le 13-06-2006 à 16:44:45  profilanswer
 

Celle de Paul Hood est la meilleure de loin

n°1386791
Paul Hood
Posté le 13-06-2006 à 17:09:33  profilanswer
 

kiki29 a écrit :

Celle de Paul Hood est la meilleure de loin


 
mais non, mais non !!
 
merci kiki29

n°1387090
blase
Posté le 14-06-2006 à 08:15:56  profilanswer
 

Merci pour tout. ça fonctionne


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  opération sur chaîne

 

Sujets relatifs
[Access] Masque de saisie et reconnaissance chaine de caractèresChaine de caractère espace
[RegExp] Détecter toutes les adresses URL d'une chaîne de caractèressuppression d'une chaîne de caractères entre []
[Résolu] Problème MySQL 1&1 : plus de protection de chaine !Php : convertir chaine de caractère
[Débutant] Incrémeter une chaine unsigned char[Access] requete SQL, comment connaitre la taille d'une chaine ?
suppression d'une partie de chaine de caractèretout sauf une chaîne dans un egexp
Plus de sujets relatifs à : opération sur chaîne


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR