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 de valeur Excel 2007


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Par défaut Recherche de valeur Excel 2007
    Bonjour,

    Je suis débutant en VBA sous Excel 2007.
    Je cherche à écrire une macro qui me permet de
    1 - Rechercher la première cellule dans la colonne A de la Feuil2 de mon classeur ayant une valeur identique à la cellule A1 de la Feuil1.
    2 - Se positionner sur la cellule trouvée et effacer le contenu
    3 - Se positionner sur la Feuil1

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour,

    Bienvenu sur VBA Excel.

    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
    Sub tt()
    Set f1 = ThisWorkbook.Worksheets("Feuil1")
     valeur = f1.Cells(1, 1).Value
     
    Set f2 = ThisWorkbook.Worksheets("Feuil2")
     
     derniereligne = f2.Range("A" & Rows.Count).End(xlUp).Row
     
     For I = 1 To derniereligne
      If f2.Cells(I, 1).Value = valeur Then
       f2.Activate 'Facultatif
       f2.Cells(I, 1).Select  'Facultatif
       f2.Cells(I, 1).Value = ""
       f1.Activate  'Facultatif
       Exit For
      End If
     Next
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une autre piste :
    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
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
     
        With Worksheets("Feuil2")
     
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
        'recherche la valeur
        Set Cel = Plage.Find(Worksheets("Feuil1").Range("A1").Value, , xlValues, xlWhole)
     
        'si trouvée, efface
        If Not Cel Is Nothing Then
     
            Cel.Value = ""
     
        End If
     
    End Sub
    Hervé.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Par défaut ci
    Merci pour ton aide. J'ai gagné du temps.

    Cordialement

  5. #5
    Invité
    Invité(e)
    Par défaut
    bonjour,
    test ç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
    16
    17
     
    Sub test()
    Dim L As Long
    L = SerchXls(Sheets("Feuil2").Range("A:A"), Sheets("Feuil2").Range("A1"), Sheets("Feuil1").Range("A1"), True)
    If L <> 0 Then MsgBox "Trouvé en ligne : " & L
    End Sub
     
    Function SerchXls(Myrange As Range, MyCellule As Range, strRecherche, EntierCell As Boolean) As Long '
    On Error Resume Next
    Dim CellEntrier As Integer
    If EntierCell = True Then CellEntrier = xlWhole Else CellEntrier = xlPart
    SerchXls = 0
       SerchXls = Myrange.Cells.Find(what:=strRecherche, After:=MyCellule, LookIn:=xlFormulas, LookAt _
            :=CellEntrier, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=EntierCell).Row
      If SerchXls <= MyCellule.Row Then SerchXls = 0
    End Function

  6. #6
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub chercher_a1()
    Dim r As Range
    Set r = Sheets("Feuil2").Columns(1).Find(Sheets("Feuil1").Range("a1"), , xlValues, xlWhole)
    If Not r Is Nothing Then Sheets("Feuil2").Cells(r.Row, 1).ClearContents
    End Sub

  7. #7
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    rdurupt

    Mieux vaut mettre SearchFormat:=False.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Et oui!
    Je voulai frimer en montrant a qq1 du forum que l'enregisteur de macro donnait une trame et qu'en la retouchant!
    Pourvue qu'il ne tombe pas sur ce poste!
    Citation Envoyé par Docmarti Voir le message
    rdurupt

    Le paramètre SearchFormat s'utilise en conjonction avec la propriété FindFormat. Mieux vaut mettre SearchFormat:=False.

    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
    Sub UseFindFormat()
     
     ' Establish search criteria.
     With Application.FindFormat.Font
     .Name = "Arial"
     .FontStyle = "Regular"
     .Size = 10
     End With
     
     ' Notify user.
     With Application.FindFormat.Font
     MsgBox .Name & "-" & .FontStyle & "-" & .Size & _
     " font is what the search criteria is set to."
     End With
     
    End Sub

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par ulpu6422 Voir le message
    2 - Se positionner sur la cellule trouvée et effacer le contenu
    3 - Se positionner sur la Feuil1
    Comme on peut le voir dans les codes proposer, il n'est pas nécessaire de se positionner sur une cellule pour en effacer le contenu.

    Comme tu le vois, il y a de nombreuses méthode pour parvenir à ce résultat
    Je te propose ma version en une seule ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Column("A").Find(Worksheets("Feuil1").Cells(1,1)).ClearContents
    A placer bien sûr dans une structure Sub / End Sub.

  10. #10
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Oui menhir, plus courte
    mais efface 10 quand on cherche 1 si les chiffre sont dans le desordre
    et puis columnS("a") me semble plus justeque column("a")

    Mais bon, je dis ça juste parce que c'est pas moi qu'est la plus courte

  11. #11
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Comme on peut le voir dans les codes proposer, il n'est pas nécessaire de se positionner sur une cellule pour en effacer le contenu.

    Comme tu le vois, il y a de nombreuses méthode pour parvenir à ce résultat
    Je te propose ma version en une seule ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Column("A").Find(Worksheets("Feuil1").Cells(1,1)).ClearContents
    A placer bien sûr dans une structure Sub / End Sub.

    merci pour ta réponse, mais lorsque la commande est lancée à partir d'un click sur une checkbox et j'ai le message d'erreur "propriété ou méthode non gérée par cet objet".

  12. #12
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par ulpu6422 Voir le message
    merci pour ta réponse, mais lorsque la commande est lancée à partir d'un click sur une checkbox et j'ai le message d'erreur "propriété ou méthode non gérée par cet objet".
    Le correctif a été proposé par keygen08 (merci à lui ) juste après mon message.

Discussions similaires

  1. Problème : Recherche de valeur sur Excel
    Par tzehani dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/08/2007, 16h45
  2. Problème : Recherche de valeur sur Excel
    Par tzehani dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/08/2007, 17h04
  3. Rechercher une valeur dans excel avec VBA
    Par kebab666 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2007, 11h00
  4. Réponses: 2
    Dernier message: 08/06/2007, 11h18
  5. recherche de valeurs dans un tableur excel
    Par maxiut dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/05/2006, 08h25

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