Utilisation de CStr (C.offset) dans une condition if

Bonjour à tous,

Quelqu'un pourrait-il m'aider pour affiner ma ligne de code avec un CStr Offset

Je travail sur une listview que je peux alimenter par un recherche dans 2 combobox (CStr(C.Offset(, 1)) = Offre et CStr(C.Offset(, 2)) = Ville) . Le code suivant fonctionne bien et alimente bien ma listview toutefois j'aimerais l'affiner pour que je puisse avoir un msgbox style "pas de correspondance" si les conditions ne sont pas réunis et si possible pouvoir alimenter ma recherche uniquement en remplissant qu'une combobox (pour l'instant les 2 sont reliées)

Je sèche .. Help

Bonne fin de journée.

Dim f As Worksheet
Dim Lr As Long, ligne As Integer
Set f = ThisWorkbook.Sheets("basetrajetrégulier")
Lr = f.Range("A" & Rows.Count).End(xlUp).Row
With Me.ListView1
    .ListItems.Clear

With .ColumnHeaders
        For I = 1 To 24
            .Add , , f.Cells(1, I)

   Next I
  End With
    .View = lvwReport
    .FullRowSelect = True
    .Gridlines = False
    If Lr = 2 Then Exit Sub
    ligne = 1
    For Each C In f.Range("A2:A" & Lr)
    If CStr(C.Offset(, 1)) = Offre And CStr(C.Offset(, 2)) = Ville Then
    .ListItems.Add , , C
    For I = 1 To 24
    .ListItems(ligne).ListSubItems.Add , , C.Offset(, I)
    Next I
     ligne = ligne + 1

Bonjour,

Pas facile sans voir votre fichier mais deux points à regarder

1. mettre cette instruction au départ juste en dessous de Lr = .range("A" &rows.Count.....

If Lr = 2 Then Exit Sub

2. Mettre des guillemets comme ceci dans cette ligne

If CStr(C.Offset(, 1)) = "Offre" And CStr(C.Offset(, 2)) = "Ville" Then

ou comme ceci

If UCase(CStr(C.Offset(, 1))) = "OFFRE" And UCase(CStr(C.Offset(, 2))) = "VILLE" Then

3. Ajoutez --> Dim C as range

NB : Si votre tableau est au format structuré on peut encore modifier

Cordialement

Bonsoir à tous,

Grand merci Dan de t'être penché sur mon problème. Malheureusement je n'y arrive toujours pas tt seul. Je joint mon fichier en pj peut être que ça sera plus parlant.

Belle fin de journée,

5test-transfert.xlsm (272.84 Ko)

Bonjour dav43, Dan, le forum,

Un essai ... pourrait sûrement être simplifié

On fait un choix, combobox 3, 4 ou les 2.

bastr

Bonjour dav43, Dan, le forum,

J'avais oublié l'éventuel message "Pas de correspondance".


Bastr

Grand merci Dan de t'être penché sur mon problème. Malheureusement je n'y arrive toujours pas tt seul. Je joint mon fichier en pj peut être que ça sera plus parlant

En fait dans votre ligne If CStr(C.Offset(, 1)) = "Offre" And CStr(C.Offset(, 2)) = "Ville" Then je ne comprends pas pourquoi vous utilisez "Offre" et "Ville" ??
Pour aller au plus simple sans modifier ce que vous avez actuellement, modifiez comme expliqué ci-dessous :

Dans le code Sub ListviewCritere..., juste en dessous de la ligne --> .Gridlines = False remplacez toutes les lignes par ceci :

    ligne = 0
    For Each C In f.Range("A2:A" & Lr)
        If C.Offset(0, 1) = ComboBox3.Value And C.Offset(0, 2) = ComboBox4.Value Then
            .ListItems.Add , , C

            For i = 1 To 24
                .ListItems(ligne + 1).ListSubItems.Add , , C.Offset(, i)
            Next i
            ligne = ligne + 1
            End If
    Next C
End With
If ligne = 0 Then MsgBox "Pas de correspondance"
Set f = Nothing
End Sub

Dites moi.

NB : un détail mais vous avez une ligne vide dans vos deux combobox. C'est inutile... Donc dans le code cmbfi enlever le +1 à cette ligne --> For j = 2 To O.Range("B65536").End(xlUp).Row +1

Cordialement

Bonjour à tous,

Gros gros merci à Dan et à Bastr, ça marche nikel.

Un petit temps maintenant pour moi pour comprendre et reproduire.

Belle fin de journée,

Bonjour à tous,

j'ai clos le post mais je souhaitais allez plus loin sur le même sujet et la même base de travail et malheureusement je bloque encore. Peut être que je dois déposer un nouveau post ? (Mr me modérateur ? )

J'ai rajouter à mon programme un champ date pour faciliter les recherches, avec une date de début et de fin et une boucle sur les 2 afin que si l'utilisateur inverse les 2 ça marche qd même. Je suis reparti de la base Bastr et avant de completer tous les scénarios If possible (au moins 12 à rajouter ) j'ai testé sur déjà 4 malheureusement cela fonctionne uniquement si toutes les combobox sont pleines sinon ça bug.

Un petit coup d'aide please

Bonne journée à tous

4test-d43v2.xlsm (281.04 Ko)

Bonjour dav43, Dan, le forum,

Sauf erreur de ma part, s'il y a 4 combobox, il y a 17 combinaisons possibles.

C'est du gros stock pour le modeste développement de mon encéphale.

Si personne d'autre n'intervient, il faudra être patient.

Bastr

Bonjour Bastr,

Merci pour ton retour, j'en ai bien noté 17 aussi, je pense que j'arriverais à les écrire si j'avais les 4 premières comme modèle mais sur les 4 je n'en ai qu'une qui marche (le tt plein). Après aucune urgence et merci encore à tous les contributeurs.

Bonne journée à tous

Bonjour dav43, Dan, le forum,

Je devrais être en mesure de faire cela aujourd'hui.

Il y a aussi quelques corrections.

Exemple :

Offre qui devrait être Ville de départ
Ville qui devrait être Ville arrivée,
Etc.

Bastr

Bonjour dav43, Dan, le forum,

Un essai qui n'a pas été testé à fond.

Deux changements :
1 - Le click droit sur la ligne 1, de la colonne A à U, appelle le formulaire.
2- Un changement dans un des 4 Combobox lance la recherche. Le bouton Recherche est devenu obsolète.

Bastr

Franchement Bastr tu es un génie, un grand merci pour la correction du code et temps que tu y a passé.

Ca fonctionne au ptits oignons, j'ai perdu la boucle sur les dates mais à y réfléchir ce n'était pas très utile et c'est bien plus ergonomique comme ça.

Top aussi le clique droit dans la feuille pour ouvrir le usf, ça pourra servir au autre profane comme moi.

Je fais des tests et je clos le post si tt ok

Bonne fin de jounrée à tous et bon week end pour les chanceux qui font le pont

Bonjour à tous, Bonjour Bastr,

J'ai fait des tests et j'ai juste un bug que je n'arrive pas corriger.

si je tape n'importe quoi dans mes combobox (des choses qui ne sont pas forcément dans ma liste déroulante comme un autre nom de ville ou un autre horaire ),

je n'ai pas un message qui me dit qu'il n'y a pas de correspondance comme les autres et ça ne vide pas non plus ma listview afin de monter que la recherche n'abouti pas. Vous pensez que l'on peut corriger ça ? Je ne sais pas si c'est super clair ce que j'ai écrit

Bonne fin de journée à tous

Bonjour dav43, Dan, le forum,

Le fichier de Mytyck a pris ma journée.

Je regarde et te reviens tôt demain sur le sujet.

Bastr

Bonjour dav43, Dan, le forum,

J'ai compris mon erreur et je l'ai testé sur le combobox4, ça fonctionne.

J'applique sur les combobox 2 et 3, restera la date.

Bastr

Bonjour dav43, Dan, le forum,

Je ne t'ai pas oublié, en plus de corriger quand l'on tape n'importe quoi, je suis à ajouter : si l'on sélectionne une ville de départ, dans le combobox de la ville d'arrivée, il ne reste que les villes possibles selon le tableau et ainsi en cascade pour le jour et l'heure.

J'ai oublié de me faire une copie et j'ai perdu passablement de temps.
Demain, ce devrait être complété.

Bastr

Bonjour à tous, bonjour Bastr,

Merci beaucoup pour ton aide et pour ta proposition d'amélioration, c'est vraiment sympa.

La cascade c'est vrai que c'est plus fluide. Sans vouloir être lourd penses-tu que la cascade marchera aussi en sens inverse, par exemple si on commence par taper la ville d'arrivée ?

Encore merci Bastr

Bone journée,

à tous

Bonjour dav43, Dan, le forum,

J'ai une peu de difficulé et un petit manque de temps.
Je reviens bientôt.

Bastr
Bonjour dav43, Dan, le forum,

Sincèrement désolé dav43, je n'y arrive pas.

Bastr
Rechercher des sujets similaires à "utilisation cstr offset condition"