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 :

Erreur avec l'utilisation de Find


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Sadr'ihel
    Homme Profil pro
    AQSSE
    Inscrit en
    Juin 2016
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : AQSSE

    Informations forums :
    Inscription : Juin 2016
    Messages : 56
    Par défaut Erreur avec l'utilisation de Find
    Bonsoir à tous,

    J'ai une petite curiosité à soumettre à votre sagacité.

    Je copie une plage de donnée en colonne d'un classeur que je souhaite mettre dans un autre classeur.
    Comme c'est les données du mois, je souhaite qu'elle soit dans la colonne du mois correspondant.
    Mais les données sources ne sont pas forcement du mois en cours donc il faut les placer au bon mois.

    J'ai choisi la fonction Find car je l'ai découverte récemment et la trouve assez simple à mettre en oeuvre.

    J'utilise cette ligne de code pour trouver le mois dans une ligne C1 à N1 comme vous pouvez le lire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set cell2 = Range("C1:N1").Find(what:=mois) 'cherche le mois dans la ligne C
    cell2.Offset(2, 0).Select
    Elle fonctionne très bien sauf pour le mois de janvier (1) qui va être coller à octobre (10).
    Sachant que j'extrais le mois de la date renseigner plus haut dans mon code je cherche un chiffre ici 1 donc pas 10

    Le format Date n'entre pas dans le problème (a priori) car dans ma cellule mois j'ai bien le numéro correspondant au mois renseigné.

    si on pouvais m'éclairer j'apprecierai

    A vous lire

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonsoir,
    Citation Envoyé par Sadr'ihel Voir le message
    J'ai une petite curiosité à soumettre à votre sagacité.
    Elle fonctionne très bien sauf pour le mois de janvier (1) qui va être coller à octobre (10).
    Cela n'a rien de curieux ton souci car comme tu peux le constater find a plusieurs paramètres
    expression. Find( Les, après, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat )
    https://docs.microsoft.com/fr-fr/off...cel.range.find

    et en particulier : LookAt Facultatif Variant Peut être une des constantes xlLookAt suivantes : xlWhole ou xlPart.

    Donc si tu cherches 1 tu peux très bien le trouver dans 10 car tu ne précises pas xlWhole (cellule totale) dans ton paramètre.

    Il est toujours important de bien préciser ce que l'on recherche si l'on ne veut pas avoir de surprises.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set cell2 = Range("C1:N1").Find(what:=mois,after:=[C1], LookIn:=xlvalues, LookAt:=xlWhole ) 'cherche le mois dans la ligne 1
    If cell2 is nothing then
    ' traitement pas trouvé
    else
    ' traitement trouvé

  3. #3
    Membre confirmé Avatar de Sadr'ihel
    Homme Profil pro
    AQSSE
    Inscrit en
    Juin 2016
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : AQSSE

    Informations forums :
    Inscription : Juin 2016
    Messages : 56
    Par défaut
    Bonsoir anasecu,

    Merci pour ton aide, c'est vrai que j'ai pris la forme très simplifiée de cette fonction.

    Donc si j'ai bien compris:

    after:=[C1] : donne un ordre C1=>N1
    LookIn:=xlvalues : la valeur exact que je cherche
    LookAt:=xlWhole : dans la cellule C1 (puis la suivante )

    Je vais essayer de suite

  4. #4
    Membre confirmé Avatar de Sadr'ihel
    Homme Profil pro
    AQSSE
    Inscrit en
    Juin 2016
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : AQSSE

    Informations forums :
    Inscription : Juin 2016
    Messages : 56
    Par défaut
    Ça marche impeccable !

    Merci beaucoup

  5. #5
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Citation Envoyé par Sadr'ihel Voir le message
    Donc si j'ai bien compris:
    Pas tout à fait :
    after:=[C1] : la recherche commence en C1 systématiquement sinon à ta position si omis
    LookIn:=xlvalues : recherche sur la valeur ( ou la formule si xlFormulas)
    LookAt:=xlWhole : la valeur exacte que je cherche dans la totalité de la cellule (ou une partie si xlPart)

    Si tu ne précises pas excel utilise le dernier paramètre utilisé.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/06/2007, 12h50
  2. Erreur: avec l'utilisation de template<int N>
    Par vincho dans le forum C++
    Réponses: 8
    Dernier message: 22/02/2007, 19h07
  3. Erreur avec GetImageSize : utilisation d'une URL
    Par Are-no dans le forum Langage
    Réponses: 4
    Dernier message: 14/02/2007, 23h41
  4. [VBA-E] Pb avec l'utilisation de .Find
    Par belfaigore dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2006, 07h38
  5. Retour d'erreur avec l'utilisation de la commande For en VBS
    Par genialk2000 dans le forum VBScript
    Réponses: 3
    Dernier message: 30/03/2005, 18h45

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