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 :

Problème Like avec Range


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 12
    Par défaut Problème Like avec Range
    Bonjour a tous,

    Voici mon code et mon problème se situe sur le IF. Je veux comparer la chaine de caractere à l'intérieur de ma cellule avec la chaine de caractère entré via l'InputBox. Sauf que d'apres mon espion ma fonction renvoie toujours faux. Pouvez-vous m'éclairer ?

    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
    Private Sub CommandButton3_Click()
    Dim comp As String, mois As Integer, i As Integer, valeur As Date, popo As String
     
     
    i = 2
    comp = InputBox("Veuillez préciser la compagnie recherchée", "Données sur l'entreprise")
    mois = InputBox("Veuillez définir le mois voulu")
     
        Do While Range("C" & i) <> ""
        If Range("I" & i) Like "*comp*" Then
        Sheets("Commandes par entreprise").Range("A" & i) = Range("A" & i)
        Sheets("Commandes par entreprise").Range("B" & i) = Range("B" & i)
        Sheets("Commandes par entreprise").Range("C" & i) = Range("I" & i)
        Sheets("Commandes par entreprise").Range("D" & i) = Range("D" & i)
        Sheets("Commandes par entreprise").Range("E" & i) = Range("E" & i)
        Sheets("Commandes par entreprise").Range("F" & i) = Range("G" & i)
        Sheets("Commandes par entreprise").Range("G" & i) = Range("H" & i)
     
     
           End If
        i = i + 1
        Loop
    End Sub
    Merci d'avance,

    Bien cordialement,

    Nass

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 168
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La syntaxe est correcte mais es-tu certain de tester la cellule de la bonne feuille ?
    Fait un Debug.print Range("I" & i) juste avant le test pour vérifier sa valeur.
    Je viens de relire ton code
    If Range("I" & i) Like "*comp*" Then tu recherches une constante et pas le résultat de ton Input.
    Sans avoir testé la bonne syntaxe devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("I" & i) Like "*" & comp & "*" Then
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je crois plutôt que pour ce qu'il cherche à faire il faut remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("I" & i) Like "*comp*" Then
    Par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("I" & i).Value Like "*" & comp & "*" Then

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 12
    Par défaut
    Vos deux réponses fonctionnent... j'ai toujours pas compris la différence entre Range et Range.value si vous pouviez m'éclairer Merciii vous êtes au top sur ce forum je viens de le découvrir et je ne vous remercierais jamais assez

  5. #5
    Invité
    Invité(e)
    Par défaut
    Range("I" & i) donne la même chose que Range("I" & i).Value.
    Cependant la deuxième écriture est plus rigoureuse.

  6. #6
    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,

    Dans la plupart des cas, "Value" est considéré comme la propriété par défaut de l'objet "Range". Mais pas toujours. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1") = "Feuil1"
    Sheets(Range("A1")).Select
    provoque une erreur sur la seconde ligne.

  7. #7
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Range c'est un range, range.value c'est la valeur de ce range.
    par défaut sans propriété c'est la value qui est demandée.. donc range = range.value...

    Mais range.value c'est plus propre te diront les experts

    Tu m'apprends quelque chose l'ami!
    Citation Envoyé par Daniel.C Voir le message
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1") = "Feuil1"
    Sheets(Range("A1")).Select
    provoque une erreur sur la seconde ligne.

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 12
    Par défaut
    C'est très clair ! je vous remercie tous

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

Discussions similaires

  1. Problème pour requête SQL LIKE avec ACCESS
    Par ar.aziz dans le forum VB.NET
    Réponses: 2
    Dernier message: 02/07/2008, 10h53
  2. problème requête "like" avec chiffre
    Par bidibou dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 28/02/2008, 09h44
  3. Problème Syntaxe requête SQL LIKE avec ACCESS
    Par Arnofish dans le forum Accès aux données
    Réponses: 3
    Dernier message: 22/12/2007, 11h57
  4. Réponses: 7
    Dernier message: 16/09/2007, 09h29
  5. Problème avec Range.Formula
    Par zerti dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/07/2007, 17h25

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