Listview à afficher si curseur sur cellule déterminée (ville des hôtels)

  • Initiateur de la discussion Initiateur de la discussion anthoYS
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

anthoYS

XLDnaute Barbatruc
Bonjour,

Voilà l'idée, afficher un listview si curseur est sur la cellule qui contient le nom de la ville.
Ici, dans l'exemple seulement deux villes apparaissent ; Miami et Bruxelles...
Ensuite, nous avons une seconde ville, qui détaille quelques hôtels de la ville en question soit Miami et Bruxelles...

Les deux tableaux de ce deuxième onglet 'dhot' sont nommées et ce sont ces derniers qu'il faudra afficher quand le curseur sera sur la ville choisie sur le premier onglet 'hot'.
Soit le tableau ''Miami_hotels'' si le curseur est sur Miami (A5), sinon le tableau "bruxelles_hotels" si le curseur est sur Bruxelles (A6).

Pour plus d'informations, voir en PJ

Merci bien aux futurs intervenants...

Source d'inspiration : >>>sujet récent <<<lien
 

Pièces jointes

Re : Listview à afficher si curseur sur cellule déterminée (ville des hôtels)

Bonjour anthoYS. 🙂

Je n'ai pas de solution directe pour toi, mais tu peux t'inspirer de :

Code:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
UserForm1.Show
End Sub

Mais ça t'oblige à créer autant de boutons que de cellules cibles...

A plus.
 
Re : Listview à afficher si curseur sur cellule déterminée (ville des hôtels)

Re,

J'ai revu le fichier, y ai ajouté un code, un USF, mais rien n'y fait...
Erreur, débogage... 😕

Merci à ce qui savent et m'aiderons surtout.

@+ j'espère!😉
 

Pièces jointes

Re : Listview à afficher si curseur sur cellule déterminée (ville des hôtels)

Bonjour 13GIBE59, le forum,

Oui mais

Code:
.Add , , Sheets(Onglet).Cells(3, 1), 40
,


c'est oK, puisque dans le code de la feuille 'hot', il est préciser que
Code:
Onglet = "dhot"

Merci par avance, ça bloque toujours.

@+!
 

Pièces jointes

Re : Listview à afficher si curseur sur cellule déterminée (ville des hôtels)

Re,

Partie du code fautif lors du débogage :

Code:
Application.ScreenUpdating = False
ListView1.View = lvwReport
ListView1.FullRowSelect = True
Me.ListView1.Width = 4
Me.ListView1.ColumnHeaders.Clear
With Me.ListView1.ColumnHeaders
   [COLOR="Yellow"] .Add , , Sheets(Onglet).Cells(3, 1), 40[/COLOR]
    Me.ListView1.Width = Me.ListView1.Width + Me.ListView1.ColumnHeaders(1).Width
    For Cl = 2 To 13
        .Add , , Sheets(Onglet).Cells(3, Cl), 40, lvwColumnCenter
        Me.ListView1.Width = Me.ListView1.Width + Me.ListView1.ColumnHeaders(Cl).Width
    Next
End With

Bizarrement la ligne que tu m'a évoqué...

Je ne comprend pas là.😕


@+
 
Re : Listview à afficher si curseur sur cellule déterminée (ville des hôtels)

Salut anthoYS

Le problème vient d'avant du code dans la feuille "hot"
Je l'ai modifié ainsi
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set Plage = Intersect(Range("A5:A" & Range("B65536").End(xlUp).Row), Target)
If Not Plage Is Nothing Then
    Onglet = "dhot"
    UserForm1.Show 0
  Else
    Unload UserForm1
  End If
End Sub
De plus dans un module, il faut déclarer ta variable "Onglet" comme étant publique

Voir fichier joint 😉

A+
 

Pièces jointes

Dernière modification par un modérateur:
Re : Listview à afficher si curseur sur cellule déterminée (ville des hôtels)

Re, à tous ;

Débogage :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set Plage = Intersect(Range("A5:A" & Range("B65536").End(xlUp).Row), Target)
If Not Plage Is Nothing Then
    Onglet = "dhot"
    [COLOR="Red"]UserForm1.Show 0[/COLOR]
  Else
    Unload UserForm1
  End If
End Sub

@+ à tous
 

Pièces jointes

Re : Listview à afficher si curseur sur cellule déterminée (ville des hôtels)

bonjour,
je supprimerai la ligne Set plage = ... et intégrerai directement son contenu dans la ligne suivante :

If Not Intersect(Range("A5:A" & Range("B65536").End(xlUp).Row), Target) Is Nothing Then

A tester
 
Re : Listview à afficher si curseur sur cellule déterminée (ville des hôtels)

Re,

Merci tout d'abord CHALET53.
Je n'ai pas bien compris...
Peut-tu envoyer le code au complet ;

Qu'est-ce qui est bon le premier ou le second code? ou aucun, dans ce cas quel est le bon selon toi (CHALET53)?


Code1 :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("A5:A" & Range("B65536").End(xlUp).Row), Target) Is Nothing ThenTarget)
If Not Plage Is Nothing Then
    Onglet = "dhot"
    UserForm1.Show 0
  Else
    Unload UserForm1
  End If
End Sub

Code2 :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("A5:A" & Range("B65536").End(xlUp).Row), Target) Is Nothing Then
    Onglet = "dhot"
    UserForm1.Show 0
  Else
    Unload UserForm1
  End If
End Sub

Mais toujours est-il que dans cet autre code c'est ce qui est en fond jaune dans le débogage qui pose problème!!

Code:
Private Sub UserForm_Activate()
Dim Lg As Integer, Cl As Integer, i As Integer

Application.ScreenUpdating = False
ListView1.View = lvwReport
ListView1.FullRowSelect = True
Me.ListView1.Width = 4
Me.ListView1.ColumnHeaders.Clear
With Me.ListView1.ColumnHeaders
    [COLOR="Red"][B].Add , , Sheets(Onglet).Cells(3, 1), 40[/B][/COLOR]
    Me.ListView1.Width = Me.ListView1.Width + Me.ListView1.ColumnHeaders(1).Width
    For Cl = 2 To 13
        .Add , , Sheets(Onglet).Cells(3, Cl), 40, lvwColumnCenter
        Me.ListView1.Width = Me.ListView1.Width + Me.ListView1.ColumnHeaders(Cl).Width
    Next
End With
UserForm1.Show 0
MaJUf
Application.ScreenUpdating = True

End Sub

Je ne comprends pas! 😕

@+
 
Re : Listview à afficher si curseur sur cellule déterminée (ville des hôtels)

Salut AnthoYS,

As-tu daigner regarder le fichier que j'avais mis dans mon post précédent 😕

Je te signale au passage que je t'apporte la solution, mais bon ...
 
Re : Listview à afficher si curseur sur cellule déterminée (ville des hôtels)

Re, BrunoM45,

Non. Mais il faut dire que comme j'avais mon fichier ouvert -celui que tu a eu-, j'ai copié le code suivant (je te cite) :


Le problème vient d'avant du code dans la feuille "hot"
Je l'ai modifié ainsi
Code:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set Plage = Intersect(Range("A5:A" & Range("B65536").End(xlUp).Row), Target)
If Not Plage Is Nothing Then
    Onglet = "dhot"
    UserForm1.Show 0
  Else
    Unload UserForm1
  End If
End Sub

Or, il s'avère érroné, si tu te référe à ma réponse suivante...

Merci pour le fichier, l'USF s'ouvre mais n'affiche pas ce que je souhaite (PJ1) d'ou mes réponses... voir PJ, or je souhaite qu'il affiche (PJ2 -clic en A5- et PJ3 -clic en A6- formalisé en USF comme celui de BrunoM45 mais son contenu ne voulait rien dire...)

A+
 

Pièces jointes

  • PJ1.jpg
    PJ1.jpg
    24.4 KB · Affichages: 79
  • PJ2.jpg
    PJ2.jpg
    44 KB · Affichages: 63
  • PJ3.jpg
    PJ3.jpg
    23 KB · Affichages: 133
Dernière édition:
Re : Listview à afficher si curseur sur cellule déterminée (ville des hôtels)

Re,

D'ou je renvoie CHALET53, et ceux qui voudront m'aider à ce post >>>>Lien<<<<

Car pour infos, BrunoM45 est intervenu pensant qu'il avait apporté la solution, or il y était presque mais n'avait pas déduit -ou vu- que son USF projettait des choses incohérentes...)

Merci par avance à ceux qui voudront m'aider!

Et à bientôt!
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour