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 :

Affichage items dans listbox selon l'année


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de BERRACHED SAID
    Inscrit en
    Janvier 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2009
    Messages : 192
    Points : 125
    Points
    125
    Par défaut Affichage items dans listbox selon l'année
    Bonjour le forum et bonne journée

    je reviens encore vers vous afin de m'aider a résoudre un petit souci que je n'arrive pas élucider.je dispose d'une colonne qui contiens des numéro de client qui sont un peu spécial "263/01/2012/0001" je veux faire un tri sur cette colonne pour pouvoir visualiser les clients par année c'est a dire la 3 case du numéro ex: 2012 puis afficher le résultat dans listbox qui ce trouve dans la feuil1.

    j'ai met ce code mais il marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    On Error Resume Next
    Dim L As Integer
    Dim vif As Integer
    Dim Recherches As String
    Recherches = TextBox1.Value
    Feuil1.ListBox1.Clear
    'If IsNumeric(Application.Match(X, C, 0)) Then
    With Feuil6
     L = CDbl(Application.Match("??????" & Recherches, .[A:A], 0))
       vif = L
    End With
    Feuil1.ListBox1.List = vif
    Merci d'avance de votre aide

  2. #2
    Membre régulier
    Inscrit en
    Mai 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 85
    Points : 122
    Points
    122
    Par défaut
    Il faut que tu parcours ta colonne et que tu vérifie pour chaque cellule, un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for i=premiereligne to derniereligne
         if cells(i,L) like "*/" & recherche & "/*" then
               ...
         end if
    next i

  3. #3
    Membre habitué Avatar de BERRACHED SAID
    Inscrit en
    Janvier 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2009
    Messages : 192
    Points : 125
    Points
    125
    Par défaut
    bonjour fred

    le problème est, ou placer la boucle dans le code ?

    Merci

  4. #4
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    Il te faut utiliser la fonction "split" en recherchant le caractère /.
    Cette fonction va découper cette chaîne de caractère et mettre chaque partie dans un tableau.
    Tu pourras ensuite faire tes comparaisons.
    Fais des recherches sur cette fonction notamment il y a un très bon exemple dans la FAQ.

  5. #5
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    bonjour j'avais 5 mn
    voici un exemple:
    adapte le à tes besoins
    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
    Dim montab As Variant, recherche As String
    Dim plage As Range
    recherche = "2012"
    Sheets("Feuil2").ListBox1.Clear
    With Sheets("Feuil1")
        'je recherche dans ma colonne A à partir de A2 jusqu'à la dernière ligne utilisée
        Set plage = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
            'pour chaque cellule de ma plage
            For Each cel In plage
                If cel <> "" Then
                    'je découpe ma chaine de caractere en fonction des /
                    montab = Split(cel.Value, "/")
                    'ici montab(2) correspond bien à 2012
                    'donc je met dans ma listbox la valeur de la colonne C correspondante
                    If montab(2) = recherche Then Sheets("Feuil2").ListBox1.AddItem cel.Offset(0, 2).Value
     
                End If
            Next cel
    End With

  6. #6
    Membre régulier
    Inscrit en
    Mai 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 85
    Points : 122
    Points
    122
    Par défaut
    Ma boucle for remplace ton bloc with.

    Split peut t'éviter des problèmes dans le cas où le numéro de client serait "XXX/2012/XXXX/XX" mais je suppose que ce cas est impossible, du coup c'est un peu faire compliquer pour pas grand chose.

  7. #7
    Membre habitué Avatar de BERRACHED SAID
    Inscrit en
    Janvier 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2009
    Messages : 192
    Points : 125
    Points
    125
    Par défaut
    Bonjour le forum rvtoulon et fred

    on recopiant le code de rvtoulon je dirai qu'on y presque je l'ai adapter de cette façon mais une erreur "End if sans bloc if" souligné en rouge

    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
    Dim montab As Variant, recherche As String
    Dim plage As Range
    recherche = Feuil1.TextBox1.Value
    Sheets("Interface").ListBox1.Clear
    With Sheets("Offices & Organismes")
        'je recherche dans ma colonne A à partir de A2 jusqu'à la dernière ligne utilisée
        Set plage = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
            'pour chaque cellule de ma plage
            For Each cel In plage
                If cel <> "" Then
                    'je découpe ma chaine de caractere en fonction des /
                    montab = Split(cel.Value, "/")
                    'ici montab(2) correspond bien à 2012
                    'donc je met dans ma listbox la valeur de la colonne C correspondante
                    If montab(2) = recherche Then 'Sheets("Interface").ListBox1.AddItem cel.Offset(0, 2).Value
                    With Feuil1.ListBox1
                    .List(ListBox1.ListCount - 1, 1) = Range("A" & cel).Value
                    .List(ListBox1.ListCount - 1, 2) = Range("B" & cel).Value
                    .List(ListBox1.ListCount - 1, 3) = Range("C" & cel).Value
                    .List(ListBox1.ListCount - 1, 4) = Range("D" & cel).Value
                    .List(ListBox1.ListCount - 1, 5) = Range("E" & cel).Value
                    .List(ListBox1.ListCount - 1, 6) = Range("F" & cel).Value
                    .List(ListBox1.ListCount - 1, 7) = Range("G" & cel).Value
             End If
             Next cel
             End With
             
    End With

    merci a vous deux

  8. #8
    Membre régulier
    Inscrit en
    Mai 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 85
    Points : 122
    Points
    122
    Par défaut
    Edit:

    En fait tu as foiré les fermetures de blocs, tu devrais avoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    end with
    end if
    end if
    next cel
    end with

  9. #9
    Membre habitué Avatar de BERRACHED SAID
    Inscrit en
    Janvier 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2009
    Messages : 192
    Points : 125
    Points
    125
    Par défaut
    salut fred rvtoulon et le forum

    je vous remercie infiniment de l'aide que vous avez eu l’obligeance de m'accordé j'en suis entièrement reconnaissant voici le code qui marche parfaitement ou cas ça intéresse quelqu'un

    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
    Dim montab As Variant, recherche As String
    Dim plage As Range
    recherche = Feuil1.TextBox1.Value
    Sheets("Interface").ListBox1.Clear
    With Sheets("Offices & Organismes")
        'je recherche dans ma colonne A à partir de A2 jusqu'à la dernière ligne utilisée
        Set plage = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
            'pour chaque cellule de ma plage
            For Each cel In plage
                If cel <> "" Then
                    'je découpe ma chaine de caractere en fonction des /
                    montab = Split(cel.Value, "/")
                    'ici montab(2) correspond bien à 2012
                    'donc je met dans ma listbox la valeur de la colonne C correspondante
                    If montab(2) = recherche Then 'Sheets("Interface").ListBox1.AddItem cel.Offset(0, 2).Value
                    With Feuil1.ListBox1
                    .AddItem cel.Offset(0, 0).Value
                    .List(ListBox1.ListCount - 1, 1) = cel.Offset(0, 1).Value
                    .List(ListBox1.ListCount - 1, 2) = cel.Offset(0, 2).Value
                    .List(ListBox1.ListCount - 1, 3) = cel.Offset(0, 3).Value
                    .List(ListBox1.ListCount - 1, 4) = cel.Offset(0, 4).Value
                    .List(ListBox1.ListCount - 1, 5) = cel.Offset(0, 5).Value
                    .List(ListBox1.ListCount - 1, 6) = cel.Offset(0, 6).Value
    End With
    End If
    End If
    Next cel
    End With
    encore merci et bonne journée.

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

Discussions similaires

  1. Affichage image dans listbox
    Par TERRIBLE dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 28/12/2010, 10h18
  2. Ajouter Items dans listbox avec selectedvalue
    Par abyssetique dans le forum C#
    Réponses: 6
    Dernier message: 21/09/2010, 19h11
  3. Réponses: 4
    Dernier message: 01/04/2009, 16h45
  4. Renommer Item dans listbox
    Par vct68 dans le forum VB.NET
    Réponses: 1
    Dernier message: 12/05/2008, 22h22
  5. Erreur de syntaxe clause FROM affichage Tous dans Listbox
    Par Lou Pitchoun dans le forum Access
    Réponses: 9
    Dernier message: 21/09/2005, 11h40

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