IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Fonction de Cafeine sur seprateur decimal


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 127
    Points : 61
    Points
    61
    Par défaut Fonction de Cafeine sur seprateur decimal
    Bonjour a tous,

    en faisant quelques recherche sur comment déterminer le separateur decimal, je suis tombé sur la fonction de CAFEINE (grand merci pour ses contributions qui me sont toujours très utiles).
    Le seul pb c'est que je n'arrive pas à comprendre comment l'utiliser

    Donc j'ai la 1ere ligne qui peut contenir soit un ";" ou une "," comme séparateur de champ. Chaque ligne est de format string

    Comment je peux utiliser le code de cafeine ci dessous pour déterminer mon séparateur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function GiveSep() As String
     
    GiveSep = Mid(3 / 2, 2, 1)
     
    End Function
    Merci d'avance pour votre aide

    Anax

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Ce code que tu cites ne fonctionne que pour le symbole décimal.
    C'est à dire le caractère, entre la partie entière et la partie décimale d'un nombre.

    Est-ce que tu veux "deviner" le séparateur de champ dans une chaîne de caractères ?

    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 127
    Points : 61
    Points
    61
    Par défaut
    Oui c'est exactement cela.
    J'ai les mêmes informations dans le fichier mais parfois on me l'exporte avec un séparateur qui est une virgule et parfois un point virgule.
    Je ne sais pas comment faire

    Merci deja pour ta réponse

    Anax

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Je pense qu'on pourrait compter le nombre d'occurrence des séparateurs potentiels et dire que celui qui a le plus gros compteur est le gagnant.

    voila ce que j'ai fait pour trois séparateurs (tabulation, virgule, point-virgule) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Function DevinerSeparateur(sFile As String) As String
    Dim lgTabCnt As Long, lgCommaCnt As Long, lgSemiColCnt As Long
    Dim l As Long, lgMaxCnt As Long, sResult As String
    Dim iFic As Integer, iRowCnt As Integer
    Dim sText As String, sOneRow As String
     
    On Error GoTo ErrH
     
    ' ouvrir fichier
    iFic = FreeFile()
    Open sFile For Input As iFic
    ' Lire les 10 1ères lignes
    Do While (Not EOF(iFic)) And (iRowCnt < 10)
       iRowCnt = iRowCnt + 1
       Line Input #iFic, sOneRow
       sText = sText + sOneRow
    Loop
    Close iFic
    ' Compter séparateurs potentiels
    For l = 1 To Len(sText)
        Select Case Mid(sText, l, 1)
            Case vbTab: lgTabCnt = lgTabCnt + 1
            Case ",": lgCommaCnt = lgCommaCnt + 1
            Case ";": lgSemiColCnt = lgSemiColCnt + 1
        End Select
    Next
    ' Compteur Maxi
    If lgTabCnt > lgMaxCnt Then lgMaxCnt = lgTabCnt
    If lgCommaCnt > lgMaxCnt Then lgMaxCnt = lgCommaCnt
    If lgSemiColCnt > lgMaxCnt Then lgMaxCnt = lgSemiColCnt
    ' Caractère correspondant au compteur maxi
    If lgMaxCnt = lgTabCnt Then
        sResult = vbTab
    ElseIf lgMaxCnt = lgCommaCnt Then
        sResult = ","
    ElseIf lgMaxCnt = lgSemiColCnt Then
        sResult = ";"
    Else
        sResult = ""
    End If
     
    Sortie:
    Close iFic
    ' Retourner séparateur trouvé ou chaîne vide sinon.
    DevinerSeparateur = sResult
    Exit Function
     
    ErrH:
    MsgBox "Erreur No. " & Err.Number & " : " & Err.Description
    Resume Sortie
    End Function
    Utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub testDevinerSeparateur()
    Dim sSep As String
    sSep = DevinerSeparateur("C:\Mon fichier.txt")
    if sSep <> "" then
       ' la fonction a trouvé
    else
       ' la fonction n'a rien trouvé
    end if
    End Sub
    A+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 127
    Points : 61
    Points
    61
    Par défaut
    merci bcp pour ta réponse
    je teste cela dans la journée et si j'ai une question complémentaire sur quelque chose que je ne comprendrai pas, je reposterai un petit message
    Encore merci pour ta réponse hyper rapide. c'est vraiment très appreciable

    Anax

Discussions similaires

  1. Fonction récursive renvoi sur page d'erreur
    Par peck dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 10h08
  2. Fonction de teste sur les voisins d'un point
    Par erkoil dans le forum OpenGL
    Réponses: 9
    Dernier message: 08/05/2005, 17h45
  3. PB pour Appel fonction dans DLL sur Builder3
    Par Fbartolo dans le forum C++Builder
    Réponses: 15
    Dernier message: 10/03/2005, 12h58
  4. Réponses: 10
    Dernier message: 03/02/2005, 13h09
  5. ma fonction marche plus sur le serveur...
    Par CDRIK dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/10/2004, 04h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo