Message erreur listebox

Résolu/Fermé
icephenix Messages postés 47 Date d'inscription lundi 23 mars 2015 Statut Membre Dernière intervention 12 mars 2017 - Modifié par *_Francis_* le 7/03/2017 à 22:20
icephenix Messages postés 47 Date d'inscription lundi 23 mars 2015 Statut Membre Dernière intervention 12 mars 2017 - 12 mars 2017 à 12:41
Bonjour,
j'ai ce code sur un fichier excel


Option Explicit

' Feuille BONS
Const lideb = 10      ' premiere ligne
Const co = "E"        ' colonne à cliquer

' Feuille "tableaux"
Const FD = "Feuil1"   ' nom de la feuille
Const coD = "A"       ' colonne montant
Const coE = "B"       ' colonne libelle
Const ht = 12.75      ' hauteur d'une ligne de la listbox - à adapter

' cette fonction renvoie l'adresse du tableau - s est le contenu de la cellule cliquée
Public Function AdrPlage(s As String) As String
Dim obj As Object, li1 As Long, li2 As Long, lifin As Long
' cherche s dans la colonne coD de la feuille FD
Set obj = Sheets(FD).Columns(coD).Find(s, , , xlWhole)
' si s non trouvé renvoie une chaine vide
If obj Is Nothing Then
  AdrPlage = ""
' sinon
Else
  ' li1 est la ligne dans FD où s a été trouvé
  li1 = obj.Row
  ' lifin est la dernière ligne non vide de la colonne coD (feuille FD)
  lifin = Sheets(FD).Range(coD & Rows.Count).End(xlUp).Row
  ' recherche de la ligne de fin du tableau : li2
  ' initialisation de li2
  li2 = li1 + 1
  ' tant que li2<= lifin et que la cellule (li2,coD) n'est pas vide on in cremebnte li2
  While Sheets(FD).Range(coD & li2) <> "" And li2 <= lifin
    li2 = li2 + 1
  Wend
  ' la plage commence en ligne li1+1 et se finit en li2 ( sur 2 colonnes coD et coE)
  AdrPlage = Sheets(FD).Range(coD & li1 + 1 & ":" & coE & li2).Address
End If
End Function

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim des As String, adr As String, nbli As Long, lifin As Long
' si la cellule cible est en colonne co
If Not Intersect(Target, Columns(co)) Is Nothing Then
  ' si listbox1 est visible, on la cache et on quitte sans rien faire
  If ListBox1.Visible Then ListBox1.Visible = False: Target.Offset(1, 0).Select: Exit Sub
  ' si la ligne cliquée est avant lideb on quiite sans rien faire
  If Target.Row < lideb Then Exit Sub
  ' sinon
  ' des = contenu de la cellule cliquée
  des = Target.Value
  ' adr = adresse du tableau correspondant calculé par la fonction AdrPlage
  adr = AdrPlage(des)
  ' si adr vide - des non trouvé - on quitte sans rien faire - on peut faire apparaitre un message d'erreur
  If adr = "" Then MsgBox "Erreur": Exit Sub
  ' remplissage et formatage de la listbox
  With ListBox1
    ' ListFillRange est l'adresse du tableau
    .ListFillRange = FD & "!" & adr
    ' nombre de lignes du tableau
    nbli = Sheets(FD).Range(adr).Rows.Count
    ' alignement de la listbox à gauche et sous la cellule cliquée
    .Left = Target.Left
    .Top = Target.Top + Target.Height + 5
    ' hauteur de la listbox - c'est là qu'il faudra peut être modifier ht
    ListBox1.Height = nbli * ht
    ' si la listbox est visible on a cache sinon on la montre
    ListBox1.Visible = True
    ' on passe à la ligne suivante pour debloquer le curseur
    Target.Offset(1, 0).Select
  End With
End If
End Sub


il fonctionne parfaitement mais quand je veux le copier dans un autre fichier excel le message d'erreur " compile Error variable not defined" et ca sélectionne listebox1 .
je suis coincé merci de votre aide

1 réponse

f894009 Messages postés 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024 1 707
8 mars 2017 à 07:49
Bonjour,
Il faudrait le fichier ou il y a l'erreur

Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
0
icephenix Messages postés 47 Date d'inscription lundi 23 mars 2015 Statut Membre Dernière intervention 12 mars 2017
8 mars 2017 à 12:25
Bonjour et merci pour votre réponse
https://www.cjoint.com/c/GCilxeIycqy voici le lien
et j'ai remarqué aussi que le double clique et opérationnel à n'importe quelle cellule pas seulement la colonne "E" alors que dans le fichier "original" c'est pas le cas
mreci
0
f894009 Messages postés 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024 1 707 > icephenix Messages postés 47 Date d'inscription lundi 23 mars 2015 Statut Membre Dernière intervention 12 mars 2017
Modifié par f894009 le 8/03/2017 à 15:58
Re,
Dans un premier temps, faudrait quand meme mettre une listbox sur la feuille, apres ca ira mieux si vous mettez Cancel=True au debut de l'evenement befordouble_clic
0
icephenix Messages postés 47 Date d'inscription lundi 23 mars 2015 Statut Membre Dernière intervention 12 mars 2017 > f894009 Messages postés 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024
12 mars 2017 à 12:41
Merci beacoup
0