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 recherche vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut Problème recherche vba
    Bonjour,


    Je voudrais que lorsque l'utilisateur rentre un n° dans une zone de texte
    excel recherche dans une plage donnée ce n°, copie la cellule avant(même ligne) et la recopie dans une cellule d'une autre feuille

    J'ai essayé ce code mais ma valeur de ma cellule est nulle


    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    Private Sub cmdRecherche_Click()
    Dim reponse, recherche As String
    Dim plage As Range
    Dim cell As Range
    Dim fiche As String
     
     
    recherche = txtRecherche
    'Si txtrecherche est vide
    If recherche = "" Then
    reponse = MsgBox("Veuillez rentrer un N° Ats: Merci", vbOKCancel + vbExclamation, "Pas de N° Ats")
     If reponse = vbYes Then
         txtRecherche.SetFocus
        Exit Sub
     End If
    End If
    Feuil1.Select
    Set plage = Feuil1.Range("C14:C238")
    'Boucle sur la plage
    For Each cell In plage
    If cell.Value = recherche Then
    cell.Select
     
    fiche = Range(cell.Address).Offset(0, -1).Value
     
    Feuil2.Range("A1").Value = fiche & Chr(10) & recherche
    End If
    Next cell
     
     
    End Sub
    une idée merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    petite chose qui me parait bizarre déjà
    à moins que Feuil1 et Feuil2 ne soient des variables de type worksheet

    essaye en remplaçant
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("Feuil1"). 
    ou
    Worksheets("Feuil2").

  3. #3
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fiche = Range(cell.Address).Offset(0, -1).Value
    tu peux l'écrire comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fiche = cell.Offset(0, -1).Value
    A mon avis ta cellule reste vide parcequ'il ne trouve rien
    A tout hazard fais ce petit test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For Each cell In plage
    If cell.Value = recherche Then
      fiche = Range(cell.Address).Offset(0, -1).Value
      MsgBox "trouvé !"
      Exit For
    End If
    Next cell
    MsgBox "fiche = " & fiche
    EDIT : re zyhack, je vois que tu commences à taper plus vite au clavier
    Tu peux utiliser Feuil1.Range("A1"), Feuil1 étant le CodeName de la feuille

  4. #4
    Membre émérite
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Par défaut
    Bonsoir à tous

    Sans la boucle, qui risque de prendre du "temps", je propose ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Feuil1.Select
    With Feuil1.Range("C14:C238")
        Set c = .Find(recherche, LookIn:=xlValues, Lookat:=xlWhole) '
    End With
    Feuil2.Range("A1").Value = Feuil1.Range("B" & c.Row).Value & Chr(10) & recherche
    Eric

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ou encore ( presque idem solution edelweisseric, mais avec traitement du cas "non trouvé")

    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
    24
    25
    26
    27
    28
    29
    30
    Private Sub cmdRecherche_Click()
    Dim reponse$, recherche$, fiche$, ad$
    Dim c as Range
     
     
    recherche = txtRecherche
     
    'Si txtrecherche est vide
    If recherche = "" Then
    reponse = MsgBox("Veuillez rentrer un N° Ats: Merci", vbOKCancel + vbExclamation, "Pas de N° Ats")
     If reponse = vbYes Then
         txtRecherche.SetFocus
        Exit Sub
     End If
    End If
     
    Sheets("Feuil1").Select
    With Worksheets("Feuil1").Range("C14:C238")
    Set c = .Find(recherche, LookIn:=xlValues, LookAt:=xlWhole)
    End With
        If Not c Is Nothing Then
        ad = c.Address
        fiche = Range(ad).Offset(0, -1).Value
        Sheets("Feuil2").Range("A1").Value = fiche & Chr(10) & recherche
        Else
        MsgBox "La recherche a échoué : " & recherche & " non trouvé !"
        End If
    Set c = Nothing
     
    End Sub

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    merci por vos réponses


    pour fring
    j'ai essayé ton code , la cellule est bien vide(pas de valeur)
    j'avais le même résultat en deboguant.

    pour edelweisseric
    je supose que c tu le déclare en object
    mais j'ai une erreur variable objet ou variable de bloc with non définie

  7. #7
    Membre émérite
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Par défaut
    Re

    Désolé, mais il faut le déclarer :
    Il y avait la réponse dans le code de jacques_jean

    Eric

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    pour jacques jean et edelweisseric

    on est sur le bon chemin mais fiche reste vide alors elle devrait me donner
    "Ac mod Elit "

    il doit avoir un problème dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    fiche = Range(ad).Offset(0, -1).Value
    en deboguant ad donne la bonne adresse mais fiche = ""

    merci à vous

  9. #9
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    A tout hazard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fiche = Range(ad).Offset(0, -1).Text

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

Discussions similaires

  1. problème recherche photos
    Par jeck dans le forum Access
    Réponses: 3
    Dernier message: 18/08/2006, 10h37
  2. Problème de VBA de passage de 2000 à 2002
    Par Oberown dans le forum Access
    Réponses: 9
    Dernier message: 10/05/2006, 14h51
  3. Problème recherche sur critère
    Par Sendo dans le forum Access
    Réponses: 1
    Dernier message: 08/03/2006, 00h51
  4. problème recherche d'un champ sous paradox
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 2
    Dernier message: 26/04/2005, 15h04
  5. problème avec VBA
    Par Delph dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2002, 13h15

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