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 :

VBA - Problème avec la fonction .Find


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut VBA - Problème avec la fonction .Find
    Bonjour,

    Je suis débutant en VBA et je bloque depuis quelques jours sur le code suivant :

    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
    Dim CT, CAT As Range
    Dim D0, critere1, critere2, critere, AdresseTrouvee As String
    Dim i, j As Integer
     
    critere1 = "D0"
    critere2 = "VLCC"
     
    For j = 1 To 2
     
        critere = "Critere" & CStr(j)
        Set CT = Sheets("TEMP").Range("A15:OP47").Find(critere)
        Set CAT = Sheets("CQM_1").Range("A1:T33").Find(critere)
     
        AdresseTrouvee = CT.Adresse
        MsgBox (AdresseTrouvee)
     
        Set CT = Nothing
        Set CAT = Nothing
     
    Next j
    Je n'arrive pas à comprendre pourquoi mais la fonction .Find ne veut pas prendre le paramètre "critere" pourtant j'ai vérifié c'est bien un String.

    Est-ce que vous avez une idée ?

    Merci d'avance.

    Salutations,

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour et bienvenue sur le Forum,

    2 remarques au préalable
    - Pour tout code reporté, utiliser les balises #
    - A chaque ligne, tel que tu as déclaré tes variables, sauf la dernière, celles-ci le sont toutes en Variant

    Voir ce tutoriel.

    Il est opportun de bien paramétrer la méthode Find.
    Ceci notamment pour la recherche dans les valeurs ou les formules, dans une cellule intégrale ou une partie de celle-ci.
    Il me paraît utile, enfin, de préciser la nature des paramètres.
    Tu peux consulter l'aide Microsoft sur cette méthode.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Réponse
    Bonjour MarcelG,

    Merci pour ta réponse je pense que ce n'est pas possible de faire mon code de cette façon. Je suis entrain d'essayer avec le code suivant mais j'ai toujours des problèmes :

    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
    Dim CT(1 To 4), CAT(1 To 4) As Range
    Dim D0, critere1, critere2, critere, AdresseTrouvee As String
    Dim SumSQ As Double
    Dim i, j As Integer
     
    SumSQ = 0
     
    For j = 1 To 4
     
        critere = Sheets("CQM_1").Cells(1, j).Value
        Set CT(j) = Sheets("TEMP").Range("A15:OP47").Find(critere)
        Set CAT(j) = Sheets("CQM_1").Range("A1:T33").Find(critere)
     
        For i = 1 To 8
                SumSQ = SumSQ + carre(Application.StDev(CT(j).Offset(i, 0).Value, CT(j).Offset(i + 8, 0).Value, CT(j).Offset(i + 16, 0).Value, CT(j).Offset(i + 24, 0).Value))
        Next i
     
        CAT(j).Offset(4, 0).Value = Sqr(1 / 8 * SumSQ)
     
    Next j
    L'objectif de ce code est de recherché des mots qui sont dans la plage A1:A4 l'un après l'autre puis de faire un calcul spécifique. Le code fonctionne et le calcul fonctionne bien je l'ai déjà essayé auparavant. Le problème c'est que le code ne fonctionne que pour le mot en A1 mais pas pour les autres. C'est comme-ci la boucle FOR ne fonctionnait pas ...

    Est-ce que vous avez une idée ?

    Merci d'avance.

    Salutations,

  4. #4
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonjour,
    Citation Envoyé par KevinWilhems Voir le message
    Je suis débutant en VBA et je bloque depuis quelques jours sur le code suivant
    Je pense que tu fais une utilisation hasardeuse de tes variables, regardes si ceci ne fonctionnerait pas de façon plus juste
    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
    Public Sub test()
    Dim CT, CAT As Range
    Dim D0, critere1, critere2, critere, AdresseTrouvee As String
    Dim i, j As Integer
     
    critere = Split("D0,VLCC", ",")
     
    For j = 0 To 1
     
        Set CT = Sheets("TEMP").Range("A15:OP47").Find(critere(j))
        If Not CT Is Nothing Then MsgBox critere(j) & " => " & CT.Address
     
        Set CAT = Sheets("CQM_1").Range("A1:T33").Find(critere(j))
        If Not CAT Is Nothing Then MsgBox critere(j) & " => " & CAT.Address
     
     
    Next j
    Set CT = Nothing
    Set CAT = Nothing
    End Sub

Discussions similaires

  1. Problème avec la fonction Find
    Par kyros21 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/01/2013, 14h50
  2. problème avec la fonction Find et un passage en argument
    Par paiva44 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/12/2009, 19h56
  3. [E - 03] Problème avec la fonction Find
    Par documentation dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/02/2009, 18h54
  4. [VBA-E]Problème avec la fonction Find
    Par Mirx1 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/04/2006, 19h43
  5. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 14h24

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