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-E] Copier le mot d'une colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut [VBA-E] Copier le mot d'une colonne
    Bonsoir,

    je voudrais réaliser une macro permettant de copier le mot présent dans une colonne. Je m'explique.

    J'ai dans la colonne A des noms de personnes. Dans la colonne B la ville où habitent ces personnes.
    Sur une autre feuille excel, je veux faire apparaître dans une msgbox les noms des personnes habitant dans une ville. Donc la recherche porte sur la ville mais moi je veux voir apparaître le nom de la personne.

    Merci d'avance

    J'ai ce bout de code pour faire ma recherche mais je n'arrive pas à afficher les noms correspondant à la ville...

    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
    34
    35
    36
    37
    38
    39
    40
     
    Sub recherche()
     
     Dim wk As Workbook
      Dim c As Range ' Resultat de la recherche
      Dim mot As String, sResult As String
      sResult = ""
      mot = InputBox("saisissez la ville")
      Dim f As Worksheet 'Feuille dans laquelle effectuer la rechercher
      Application.ScreenUpdating = False
      'Ouverture du classeur :
      Set wk = Workbooks.Open("file://localhost/users/sebneb/Desktop/liste.xls")
      'Effectue recherche dans 1° feuille du classser
      Sheets(1).Visible = False
       Set c = wk.Sheets(1).Cells.Find(What:=mot, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
     
         With Worksheets(1).Range("b:b")
        Set c = .Find(mot, LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
              '  sResult = sResult & c.Value & vbCrLf
               sResult = sResult & c.Value & vbLf
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
     
    End With
        If sResult <> "" Then
            MsgBox sResult
        ' Load Recherche  'recherche correspond sur cette ligne au nom de la userform1
         ' Recherche.Show ' meme chose recherche...
        Else
           MsgBox mot & " Introuvable"
        End If
        wk.Close False ' Fermetur de classeur sans sauvegarde...
       Application.ScreenUpdating = False  'Réactive l'affichage
     
    End Sub
    voila donc si vous pouviez m'aider je serai super content...
    un grand merci d'avance...

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Comment veux-tu afficher le nom "après" la recherche ? sResult doit être un tableau si tu veux utiliser son adresse ensuite
    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
    34
    35
    36
    37
    38
    39
    40
    41
    Sub recherche()
    Dim wk As Workbook
    Dim c As Range ' Resultat de la recherche
    Dim mot As String, sResult()
        mot = InputBox("saisissez la ville")
        Dim f As Worksheet 'Feuille dans laquelle effectuer la rechercher
        'Application.ScreenUpdating = False
        'Ouverture du classeur :
        'Set wk = ActiveWorkbook
        Set wk = Workbooks.Open("file://localhost/users/sebneb/Desktop/liste.xls")
        'Effectue recherche dans 1° feuille du classser
        'Sheets(1).Visible = False
        With wk.Sheets(1).Range("b:b")
        Set c = .Find(What:=mot, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
            If Not c Is Nothing Then
                firstAddress = c.Address
                Do
                    i = i + 1
                    ReDim Preserve sResult(i)
                    sResult(i) = c.Address
                    'sResult = sResult & c.Value & vbCrLf
                    'sResult = sResult & c.Value & vbLf
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> firstAddress
            End If
    End With
    If UBound(sResult) > 0 Then
         For i = 1 To UBound(sResult)
              MsgBox Cells(Range(sResult(i)).Row, 1)
         Next
       ElseIf sResult(1) <> "" Then
         MsgBox sResult(1)
       Else
           MsgBox mot & " Introuvable"
    End If
        ' Load Recherche  'recherche correspond sur cette ligne au nom de la userform1
         ' Recherche.Show ' meme chose recherche...
        'wk.Close False ' Fermetur de classeur sans sauvegarde...
       Application.ScreenUpdating = True 'Réactive l'affichage
    End Sub
    A+


    NB - C'est malin, en cours de mise au point de terminer sa procédure par Premier essai après toutes les modifs -> fermeture du fichier sans sauvegarde -> Youki content. T'as bien failli ne rien avoir

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    pour le moment je voudrais un truc simple, juste afficher les résultats dans une msgbox... mais avoir tous les noms en même temps... et non les afficher 1 par 1

    @+

    je vais tester le programme que tu m'as filé... merci

    sinon c'est normal que je ferme la page dans laquelle j'effectue la recherche sans sauvegarder car je ne fais que lire des données donc je n'ai pas intérêt à sauvegarder... Ma macro se trouve sur une autre feuille d'un autre classeur...
    @+

  4. #4
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    Le programme est bon, ça affiche ce que je veux mais comment faire pour afficher toutes les réponses en même temps dans une msgbox et non comme le programme 1 réponse par réponse...

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If UBound(sResult) > 0 Then
         For i = 1 To UBound(sResult)
              Msg = Msg & vbcr & Cells(Range(sResult(i)).Row, 1)
         Next
    et après la fin de la boucle, tu affiches
    mais faut une variable de plus

  6. #6
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    j'avais essayé de rajouter une variable mais moi ça ne marchait pas... donc je vais tester ta ligne à rajouter mais bon je sais que tu as raison...

Discussions similaires

  1. [vba excel] chercher un mot dans une cellule
    Par MrYoYo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/02/2009, 17h38
  2. [VBA-E]Copier le contenu d'une cellule vers une autre
    Par idir.17 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 26/03/2007, 16h50
  3. VBA-Excel copier la valeur d'une textbox dans une cellule
    Par GrandGarfield dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/08/2006, 10h15
  4. vba-Excel-Plus grande valeur d'une colonne
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 08/08/2006, 10h50
  5. [VBA-E 97]Ajout automatique d'une colonne selon la date
    Par paflolo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2006, 09h35

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