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

Excel Discussion :

Format cellule avec rechercheV apres liaison access


Sujet :

Excel

  1. #21
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour

    J'ai consulté cette discussion car je rencontre le même genre de problème:
    deux colonnes, au format texte cette fois, contenant des nombres.
    • L'une est issue d'une extraction d'une base de données, et les cellules contenant les valeurs ont une coche verte dans leur coin supérieur gauche, indiquant qu'il s'agit d'un nombre stocké sous forme de texte (alignement à gauche).
    • Dans l'autre colonne, les cellules s'affichent sans erreur (alignement à gauche, mais pas de coche verte)


    Par contre, quand je fais un RECHERCHEV, en recherchant des valeurs parmi celles qui résultent de l'import, cela me retourne #N/A.

    Si je copie une cellule des valeurs importées (avec une coche verte) et la colle dans l'autre colonne, en remplaçant la valeur correspondante, la cellule résultante a aussi une coche verte (logique), et le RECHERCHEV fonctionne.

    Savez-vous comment je peux résoudre ce problème?



    D'autre part, jacques_jean indique, en parlant de faire ENTER dans chaque cellule:

    Citation Envoyé par jacques_jean Voir le message
    J'ose espérer que vous ne le faites plus manuellement ?
    Comment peut-on automatiser ce processus?


    Je vous remercie par avance pour votre aide.

    Florent

  2. #22
    Invité
    Invité(e)
    Par défaut
    Bonjour Flocodoupoil,

    Vous pouvez joindre un extrait de votre fichier ?

    Quelques lignes dans chaque colonne suffisent.

  3. #23
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonsoir jacques_jean

    Je vous décris au préalable ce que j'ai fait pour obtenir le fichier que je joins:
    • J'ai créé la liste de nombres de droite (appelée série A) avec une série de formules, puis ai converti les cellules au format texte.
    • J'ai copié ces valeurs dans un fichier texte, que j'ai ouvert avec Excel (pour simuler un import depuis une base de données, car ma base de données génère habituellement des fichiers .txt .). J'ai fait un import à largeur fixe, au format texte.
    • J'ai alors eu la colonne de gauche (appelée série B; nombres au format texte, avec les coches vertes dans le coin supérieur gauche).
    • Pour tester le RECHERCHEV, j'ai ajouté des valeurs en face de chaque nombre de la série B (lundi, mardi...).
    • J'ai ensuite copié la série A à gauche de la série B.
    • dans les cellules en vis-à-vis de la série A, j'ai alors fait un RECHERCHEV: =RECHERCHEV(E3;$A$3:$B$44;2;FAUX), pour obtenir la même série de lundi, mardi... Mais je n'avais que des #N/A.



    En faisant un copier > collage spécial > valeurs de la série A, la formle ne fonctionnait pas.
    Par contre, quand je prends copie une valeur de la série B et la colle à la place de la même valeur dans la série A, le RECHERCHEV fonctionne.

    J'espère que j'ai été assez clair. Si non, faites-m'en part.

    Merci pour votre aide.

    Florent
    Fichiers attachés Fichiers attachés

  4. #24
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    il y a un problème de précision qui fait que tes recherchev échouent.

    j'ai testé la ligne 7 de ton fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ? range("E7").Value - range("A7").Value
    -5.55111512312578E-17
    c'est peu mais c'est suffisant
    je pense qu'il faudrait tout convertir en texte ...

    la preuve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ?range("E7").text = range("A7").text
    Vrai
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  5. #25
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour

    Merci pour vos précisions. L'erreur viendrait donc d'une différence très petite, mais non nulle, entre les deux valeurs.

    Je joins un fichier (test2.xls) où j'ai fait trois tests
    [*]TEST 1
    J'ai utilisé la même série d'étapes que pour mon premier fichier de test (test1.xls), mais cette fois-ci, je n'ai utilisé que des valeurs entières pour la série A (j'ai supposé qu'il n'y aurait pas de différence, même minime, entre les valeurs).

    Les séries A et B sont bien au format texte, mais j'ai toujours le même problème.

    [*]TEST 2
    Dans test2.xls, j'ai fait un second test, en convertissant les valeurs de la série B avec la fonction =TEXTE(valeur;format_texte). Par exemple: =TEXTE(A17;0).

    Les coches vertes ont disparu, mais le RECHERCHEV ne fonctionne toujours pas.

    [*]TEST 3
    J'ai fait le même type de conversion pour les séries A et B, et là, ça marche.



    Du coup, faut-il en déduire que pour croiser des listes avec des valeurs qui proviennent d'un import pour l'une, et d'une saisie pour l'autre, il faut passer par une conversion de ce type, pour les deux listes?


    Je vous remercie beaucoup pour votre aide.

    Florent
    Fichiers attachés Fichiers attachés

  6. #26
    Invité
    Invité(e)
    Par défaut
    Bonjour Flocodoupoil,

    Voila une formule que j'ai testée sur vos 2 fichiers (sans avoir à créer 2 nouvelles colonnes) :

    Sur Test.xls :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHEV(EPURAGE(CAR(7)&E4&CAR(7));$A$3:$B$44;2;FAUX)
    Vous recopiez la formule vers le bas et cela fonctionne lorsque l'égalité existe, car par exemple en A10 on trouve :

    0,752467968

    alors qu'en F10 le contenu est :

    0,75246797

    et la il y a une autre problème, la valeur affichée donc "0,752467968" n'est pas celle que l'on trouve si on fait un copier/coller (dans ce cas on trouve bien l'égalité avec A10 soit "0,752467968")

    Par contre sur votre fichier "Test2" dans la partie "Test initial" si vous copiez cette formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHEV(EPURAGE(CAR(7)&F5&CAR(7));$A$5:$B$10;2;FAUX)
    elle fonctionne parfaitement.

  7. #27
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonsoir

    Effectivement, dans Test.xls, les valeurs différaient car Excel a arrondi les valeurs de la colonne E (série A). Mais si on étire un peu la colonne E, on retrouve bien les valeurs de la série B.

    Mais ce qui m'embête le plus, c'est le fait qu'il faille passer par des formules pour obtenir des valeurs comparables, même lorsqu'on convertit une cellule au format texte.

    Dans Test.xls, qu'est-ce qui fait la différence entre la série A et la série B? J'ai l'impression qu'Excel remarque que dans la série B (celle qui est importée du fichier texte), on a du texte, avec des nombres qui sont écrits, et qu'il veut nous en avertir.
    Alors que dans la série A, on a sciamment choisi de convertir nos valeurs numériques au format texte. Par contre, il semble se rappeler qu'il s'agit de nombres, car il les arrondit en fonction de la largeur de la colonne.
    Du coup, bien qu'au format texte, on n'a pas les mêmes types de valeur entre les deux.

    Y a-t-il un moyen simple de convertir un nombre en texte, et uniquement en texte? Ou inversement, de convertir un format "texte-affichant-un-nombre", au format "nombre-converti-en-texte" ?

    J'espère que ma question est assez claire!

    Merci pour votre aide

  8. #28
    Invité
    Invité(e)
    Par défaut
    Re Flocodoupoil,

    Vous avez écrit :

    Dans Test.xls, qu'est-ce qui fait la différence entre la série A et la série B? J'ai l'impression qu'Excel remarque que dans la série B (celle qui est importée du fichier texte), on a du texte, avec des nombres qui sont écrits, et qu'il veut nous en avertir.
    Alors que dans la série A, on a sciamment choisi de convertir nos valeurs numériques au format texte. Par contre, il semble se rappeler qu'il s'agit de nombres, car il les arrondit en fonction de la largeur de la colonne.
    Du coup, bien qu'au format texte, on n'a pas les mêmes types de valeur entre les deux.
    Je crois que vous touchez le problème du doigt.

    Voici ce que vous pouvez trouver dans l'aide d'Excel sur la fonction "EPURAGE" :

    Supprime tous les caractères de contrôle du texte. Utilisez EPURAGE pour du texte importé d'autres applications contenant des caractères qui ne pourront peut-être pas être imprimés sous votre système d'exploitation. Par exemple, la fonction EPURAGE vous permet de supprimer certains codes de bas niveau généralement placés par le système au début et à la fin des fichiers de données, et qui ne peuvent pas être imprimés.

    Syntaxe

    EPURAGE(texte)

    texte représente toute information d'une feuille de calcul dont vous voulez supprimer les caractères qui n'apparaissent pas à l'impression.

    Exemple

    Dans la mesure où CAR(7) renvoie un caractère qui n'apparaît pas à l'impression :

    EPURAGE(CAR(7)&"texte"&CAR(7)) égale "texte"

    Il y a aussi bien sûr la possibilité d'automatiser la mise en forme par une procédure VBA.

  9. #29
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour

    Veuillez m'excuser pour ce délai dans la réponse.

    Je vous remercie beaucoup pour les informations sur la fonction EPURAGE(), qui a apparemment résolu mon problème. Dans la feuille de calcul issue d'un import (la feuille de calcul originale, pas les tests), j'ai ajouté une colonne qui contient les données importées "épurées". Dans la feuille de calcul qui contient le RECHERCHEV(), je fais une recherche non plus sur la valeur, mais sur l'"épurage" de la valeur, pour être sûr d'avoir des types de données compatibles entre les données recherchées et la liste dans laquelle je cherche.

    Il y a certainement moyen de faire plus simple, ou d'automatiser cette procédure, mais je ne suis pas à l'aise en VBA.

    En tout cas je vous remercie beaucoup pour tous vos conseils et vos informations, et d'avoir pris le temps de vous pencher sur mes interrogations!

    A bientôt

    Florent

Discussions similaires

  1. [XL-2003] Format cellule et rechercheV
    Par Alex86 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/01/2015, 14h30
  2. Réponses: 7
    Dernier message: 24/11/2014, 15h58
  3. Format de cellule avec TextToColumns
    Par Eric93 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/12/2007, 12h10
  4. format cellule (text) rapatrier par base access
    Par makroute dans le forum Excel
    Réponses: 2
    Dernier message: 23/05/2007, 11h21
  5. [C#] atteindre le format de cellule avec le pilotage d'EXCEL
    Par cortex024 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/04/2006, 09h32

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