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 :

Recherche sur 1 seule colonne


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut Recherche sur 1 seule colonne
    Bonjour a tous,

    Voilà, j'ai un fichier Excel; je voudrais faire une recherche sur une seule colonne sachant que le mot recherché apparait aussi dans d'autres colonnes... j'imagine qu'il il y a une option de restriction de recherche mais laquelle.

    Ma seconde question est : est ce que je peux faire une recherche par exemple rechercher des entiers ( integer ) sur cette meme colonne ??

    Merci d'avance pour votre réponse

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 33
    Points
    33
    Par défaut
    utilise la fonction find (présente dans l'aide en ligne)

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut Recherche sur 1 seule colonne
    J'imagine bien que je ne vais pas utiliser la fonction somme pour faire une recherche... je suis pas tres bon en prog mais bon... faut pas exagerer...

    pour l'instant j'utilise cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A:A").Select
    Cells.Find(What:="Item", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False , SearchFormat:=False).ClearContents
    ce qui ne contient aucune restriction malgrès le range.select avant la recherche...

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    tu n'as pas besoin de select !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Range("A:A").Find(What:="Item", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False , SearchFormat:=False).ClearContents
     
    .

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    Je te remercie Bbil,

    Je voudrais faire tourner ça jusqu'a ce qu'il n'y est plus de "Item" dans cette colonne uniquement. j'utilise un "Do Until" mais je ne trouve pas la bonne condition...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do Until Cells.Find(What:="Item") = False
    Ma demande sur la recherche d'entier ( integer ) reste valable...

    Merci

  6. #6
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Salut RemiT,

    Au lieu de faire un do until je te propose plutôt de sélectionner juste ce qu'il te faut en écrivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    worksheets(nom).range(worksheets(nom).range("debut").address & ":" & worksheets(nom).range("debut").end(xldown).address)
    à la place de range("a:a")

    ou nom est le nom de ta feuille et debut le nom de la première case de ta colonne (par exemple a1).
    Ce que je viens de te donner ne marche que s'il n'y a pas de case vide dans ta colonne.

    Sinon tu pourrais créer un tableau (en rentrant chaque valeur de cellule de ta colonne comme un élément du tableau) puis en testant chaque valeur du tableau par rapport à ta condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i=1 to ubound(tableau)
    if tableau(i)="item" then
    CE QUE TU VEUX FAIRE
    endif
    next i

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    merci pour ton aide conconbrr

    la 1ere solution ne fonctionne pas dans la mesure où j'ai des cases vides dans ma colonne

    Pour la 2nde solution, le probleme est que je ne sais pas combien de lignes j'ai dans mon tableau et donc une "boucle pour" est proscrite.

    Il n'existe vraiment pas de fonction du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Do Until Cells.Find(What:="Item") = False
    '
    'TRAITEMENT
    '
    'loop

  8. #8
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Essaie ça :

    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
    Option Explicit
     
    Sub test()
     
        Dim J As Integer
     
        Do Until Worksheets(1).Range("a1").Offset(J, 0).Value = "item"
     
            J = J + 1
     
        Loop
     
        MsgBox "L'adresse de la case est :" & Worksheets(1).Range("a1").Offset(J, 0).Address & Chr(10) & "Et sa valeur :" & Worksheets(1).Range("a1").Offset(J, 0).Value
     
    End Sub

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par Junness
    utilise la fonction find (présente dans l'aide en ligne)
    Citation Envoyé par RemiT
    J'imagine bien que je ne vais pas utiliser la fonction somme pour faire une recherche... je suis pas tres bon en prog mais bon... faut pas exagerer...
    Pas besoin de rabrouer ceux qui cherchent à t'aider!

    Si tu avais posté ton code dans ton premier message, ce genre de remarque n'aurait pas été nécessaire.

    De plus, si tu utilisais les balises [code], je ne devrais pas passer derrière toi pour les mettre et j'aurais, peut-être, du temps pour te répondre.

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

Discussions similaires

  1. [SP-2010] Faire une recherche sur une seule colonne ?
    Par diabli73 dans le forum SharePoint
    Réponses: 11
    Dernier message: 21/10/2012, 18h19
  2. Erreur sur recherche dans une seule colonne
    Par raphael dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/04/2008, 13h31
  3. Figure sur une seule colonne
    Par Eusebius dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 1
    Dernier message: 08/07/2006, 23h46
  4. Recherche multi-mots sur une seule colonne
    Par Badiste dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2004, 11h24

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