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 :

Probleme boucle For each


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 57
    Points : 46
    Points
    46
    Par défaut Probleme boucle For each
    Bonjour

    J'ai créé un UserForm avec plusieurs zones de texte qui me permettent de faire une recherche sur l'ensemble du classeur ,la recherche fonctionne très bien,mais de désirerais que la recherche ne s'applique que sur la feuille nommée "source",je pourrais bien sûr exclure dans ce code toutes les autres feuilles mais cela compliquerait les choses ,y a-t-il une solution pour ne s'adresser qu'à la feuille "source"?
    merci
    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
    Private Sub UserForm_Initialize()
    Dim f As Worksheet
    Dim i As Long
    Dim r As Range
    nbV = -1
     
    For Each f In ThisWorkbook.Worksheets
        Set r = f.Range("A1")
     
        If f.Name <> "Accueil" Then
        If f.Name <> "juin" Then
            For i = 2 To f.Range("A65536").End(xlUp).Row
                nbV = nbV + 1
                v(nbV, 0) = Trim(r.Offset(i - 1, 2))
                v(nbV, 1) = Trim(r.Offset(i - 1, 3))
                v(nbV, 2) = Trim(r.Offset(i - 1, 4))
                v(nbV, 3) = Trim(r.Offset(i - 1, 5))
                v(nbV, 4) = Trim(r.Offset(i - 1, 8))
     
                Next i
        End If
        End If
    Next
     
    AfficherVecteur
    End Sub

  2. #2
    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
    je ne comprends pas ... ou est ton code de recherche ..? numéro de ligne ?

  3. #3
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Points : 9 402
    Points
    9 402
    Par défaut
    Bonjour,

    En complément à bbil,

    Si tu veux faire une recherche sur la feuille "source", pourquoi faire une boucle sur chaque feuille du classeur ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Bonjour
    Oui bien sûr Jfontaine, mais j’adapte des bouts de code, je suis un jeune autodidacte qui vient de découvrir le VBA à la retraite c’est bon pour les méninges.
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    Option Explicit
     
    Dim v(10000, 6) As String
    Dim nbV As Long
     
    Private Sub CommandButton2_Click()
    Me.Hide
    End Sub
     
     
     
    Private Sub ListView1_DblClick()
        Dim indice As Long
        indice = ListView1.SelectedItem.Tag
        With ThisWorkbook.Sheets(v(indice, 0))
        .Select
        .Range("A" & CLng(v(indice, 6)) & ":M" & CLng(v(indice, 6))).Select
        End With
    End Sub
     
    Private Sub TextBox1_Change()
    AfficherVecteur
    End Sub
     
    Private Sub TextBox2_Change()
    AfficherVecteur
    End Sub
     
    Private Sub TextBox3_Change()
    AfficherVecteur
    End Sub
     
    Private Sub TextBox4_Change()
    AfficherVecteur
    End Sub
     
    Private Sub TextBox5_Change()
    AfficherVecteur
    End Sub
     
    Private Sub TextBox6_Change()
    AfficherVecteur
    End Sub
     
    Private Sub UserForm_Initialize()
    Dim f As Worksheet
    Dim i As Long
    Dim r As Range
    nbV = -1
    For Each f In ThisWorkbook.Worksheets
        Set r = f.Range("A1")
     
        If f.Name <> "Accueil" Then
            For i = 2 To f.Range("A65536").End(xlUp).Row
                nbV = nbV + 1
                v(nbV, 0) = Trim(f.Name)
                v(nbV, 1) = Trim(r.Offset(i - 1, 5))
                v(nbV, 2) = Trim(r.Offset(i - 1, 0))
                v(nbV, 3) = Trim(r.Offset(i - 1, 2))
                v(nbV, 4) = Trim(r.Offset(i - 1, 3))
                v(nbV, 5) = Trim(r.Offset(i - 1, 6))
                v(nbV, 6) = i
            Next i
        End If
    Next
     
    AfficherVecteur
    End Sub
     
    Function AfficherVecteur()
    ListView1.ListItems.Clear
    Dim i As Long
    For i = 0 To nbV
        If Valide(i) Then AjoutListe i
    Next i
    End Function
     
    Function Valide(i) As Boolean
    Valide = ((v(i, 0) = TextBox1 Or TextBox1 = "") And _
    (v(i, 1) = TextBox2 Or TextBox2 = "") And _
    (v(i, 2) = TextBox3 Or TextBox3 = "") And _
    (v(i, 3) = TextBox4 Or TextBox4 = "") And _
    (v(i, 4) = TextBox5 Or TextBox5 = "") And _
    (v(i, 5) = TextBox6 Or TextBox6 = ""))
    End Function
     
    Function AjoutListe(i)
        Dim j As Long
        With ListView1
        .ListItems.Add , , v(i, 0)
        For j = 1 To 5
            .ListItems.Item(.ListItems.Count).ListSubItems.Add , , v(i, j)
        Next j
        .ListItems.Item(.ListItems.Count).Tag = i
        End With
    End Function

Discussions similaires

  1. Probleme bouton afficher/masquer avec boucle for-each
    Par CouicCouic dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 25/11/2011, 09h48
  2. [XL-2007] Probleme de boucle For Each
    Par Jessyline dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/05/2009, 18h21
  3. Probleme VBS et boucle For each + tableau
    Par fas3r dans le forum Windows
    Réponses: 0
    Dernier message: 26/02/2008, 04h00
  4. Probleme boucle For Each controls
    Par Tusbar dans le forum Windows Forms
    Réponses: 21
    Dernier message: 14/09/2007, 00h56
  5. Boucle For each
    Par roots_man dans le forum ASP
    Réponses: 10
    Dernier message: 18/02/2005, 10h55

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