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

Macros et VBA Excel Discussion :

Convertir texte en nombre, oui mais ! [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Oenologue
    Inscrit en
    Juin 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Oenologue
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 79
    Par défaut Convertir texte en nombre, oui mais !
    Bonjour,

    Souhaitant, après une requête sql, transformer les valeur d'une colonne (D) stockées sous forme de texte en nombre j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim DerLigne As Long, Tabl(), i As Long
    DerLigne = Range("D65536").End(xlUp).Row
    Tabl = Range("D7", Cells(DerLigne, 4))
    For i = LBound(Tabl, 1) To UBound(Tabl, 1)
        Tabl(i, 1) = CDbl(Tabl(i, 1))
    Next
    Range("D7").Resize(UBound(Tabl, 1), 1) = Tabl
    Hors ce code ne fonctionne pas ! Il me renvoie une erreur d'exécution '13' : incomptabilité de type ... surlignant la ligne ici indiquée en rouge.

    J'en appelle donc à vos lumière pour me sortir de ce mauvais pas.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    pourquoi ne pas le faire dans ta requête?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SQL = & "select CDbl([Table1].[Cham1]),[Table1].[Champ2] from Table1;"
    http://www.developpez.net/forums/d14...l/#post8001279

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tabl(i, 1) = CDbl(Tabl(i, 1))
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNumeric(Tabl(i, 1)) Then Tabl(i, 1) = CDbl(Tabl(i, 1))

  4. #4
    Membre confirmé
    Homme Profil pro
    Oenologue
    Inscrit en
    Juin 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Oenologue
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 79
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Bonjour,
    Remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tabl(i, 1) = CDbl(Tabl(i, 1))
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNumeric(Tabl(i, 1)) Then Tabl(i, 1) = CDbl(Tabl(i, 1))
    C'est parfait cela répond parfaitement à ma demande, merci Daniel.C

    Par contre je vais creuser la solution de rdurupt car optimiser directement la requête sql m'intéresse au plus haut point. Si seulement il était aussi simple de faire un TCD sous sql que excel !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sql1 = "SELECT resultat_0.DATE_ANALYSE,IFNULL(echantillon_complet_0.DESIGNATION_ORIGINE, echantillon_complet_0.ORIGINE_LIBRE), CONCAT(methode_analyse_0.DESIGNATION_ANALYSE, "" ("", IFNULL(unite_mesure_0.DESIGNATION_UNITE,''), "")""), CDbl(resultat_0.RESULTAT_ANALYSE_CORRIGE) "
    L'intégration ne fonction pas si je la fais comme indiqué ci-dessus.

  5. #5
    Invité
    Invité(e)
    Par défaut
    regarde la pièce joint, dé-zip la totalité sur ton disck; en ce qui me concerne, un TDV, c'est beaucoup plus simple et en plus tu as les 2 pour le prix d'un (ADO TDC)
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip TDC.zip (42,8 Ko, 118 affichages)

  6. #6
    Membre confirmé
    Homme Profil pro
    Oenologue
    Inscrit en
    Juin 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Oenologue
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 79
    Par défaut
    Rooooo ! c'est monstrueux rdurupt, cela va bien au delà de mes connaissances. J'étudie tout cela mais je ne te garantie pas de transposer ton exemple à mon cas.
    Vais tester, merci à toi.

  7. #7
    Invité
    Invité(e)
    Par défaut
    fait une recherche sur le forum de clsTdcRD tu trouveras des exemple!

    le module de classe est une boîte à outils que tu ne touche pas c'est juste la sub test que tu adapte à ta problématique!

    j'explique dans les exemple que tu ne manqueras pas de trouver comment l’intégrer dans ton projet.

    la plus part sont comme toi ils ont un grand flipp
    Dernière modification par AlainTech ; 27/10/2014 à 21h23. Motif: Suppression de la citation inutile

  8. #8
    Membre confirmé
    Homme Profil pro
    Oenologue
    Inscrit en
    Juin 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Oenologue
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 79
    Par défaut
    Effectivement ce fichier semble très pratique, mais quand est-il lors d'une connexion ODBC.
    A priori il faut modifier le module1 (test) au regard du module de classe ADODBRD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Rep = ActiveWorkbook.Path
    con.TYPEBASE = 4
    con.Fichier = Rep & "\Test-ADODBRD.mdb"
     
     
    Rep = ActiveWorkbook.Path
    con.TYPEBASE = 1
    con.Fichier = "######" (fait référence ici à la base de données DSN)
    con.User = "#####"
    con.Password = "#####"
    Mais chose curieuse cela ne marche pas aurais-je commis une boulette ?

    Ma requête sql lancée avec ces lignes passe bien pourtant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Déclaration de la variable de connexion
    Dim cNx As New ADODB.Connection, oRS As New ADODB.Recordset
    Dim NomDuDSN As String, NomUtilisateur As String, MotDePasse As String
    NomDuDSN = "#######"
    NomUtilisateur = "######"
    MotDePasse = "######"
    'Définition de la connexion
    cNx.ConnectionString = "DSN=" & NomDuDSN & ";UID=" & NomUtilisateur & ";PWD=" & MotDePasse & ";"
    cNx.Open
    Il me renvoie une erreur d'exécution 91, Variable objet ou variable de block With non définie à ce niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For I = 1 To Rec.Fields.Count
        wrk.Sheets(1).Cells(1, I).Value = Rec.Fields(I - 1).Name
    Next I

  9. #9
    Invité
    Invité(e)
    Par défaut
    si la connexion a ta base de données fonctionne déjà tu peux oublier cette parti là! et regardé que le TDC.

    en réalité c'est sensé faire la même chose.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    con.BASE="DSN" 'dans d'autre version j'ai simplifier mais là .....
    Dernière modification par Invité ; 27/10/2014 à 16h13.

  10. #10
    Membre confirmé
    Homme Profil pro
    Oenologue
    Inscrit en
    Juin 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Oenologue
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 79
    Par défaut
    Merci à vous deux pour vos réponses claires, et à Alain Tech pour la relecture
    J'ai adapté les modules de rdurupt pour ma connexion et la génération du TDC.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] PB Convertir texte en nombre
    Par kryssy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/10/2010, 20h59
  2. Convertir texte en nombre
    Par Mighty222 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/06/2010, 11h00
  3. Convertir texte en nombre
    Par guyanais dans le forum Macros et VBA Excel
    Réponses: 37
    Dernier message: 02/02/2009, 14h21
  4. convertir texte en nombre ou date
    Par 20100. dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/04/2008, 08h12
  5. Réponses: 2
    Dernier message: 06/12/2004, 21h38

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