Besoin d'un petit coup de main pour comprendre une macro

Chebe

XLDnaute Nouveau
Bonjour

Si quelqu'un pouvait m'aider à comprendre cette macro
En fait je voudrais savoir à quoi renvoie les chiffres entre parenthèses ou après les virgules

Code:
Private Sub ListBox1_Click()
  Dim X As Range
  Set X = Columns(2).Find(ListBox1.Value, , xlValues, xlPart, , , False)
  
  If Not X Is Nothing Then
    Application.GoTo Cells(X.Row, 2), Scroll:=True
  End If
  Application.GoTo Cells(Me.ListBox1.Column(5), 2)
End Sub

Cette macro plante sur la ligne
Code:
Application.GoTo Cells(Me.ListBox1.Column(5), 2)

Merci d'avance
 

Staple1600

XLDnaute Barbatruc
Re : Besoin d'un petit coup de main pour comprendre une macro

Bonsoir à tous

Chebe
Cela indique le numéro de colonne
Ici 2, donc colonne B

Et ici le 5 indique le numéro de ligne (basée sur la ListBox)
Cells(Me.ListBox1.Column(5), 2)

Il faut voir ton fichier exemple pour faire des tests.

EDITION: en testant rapidement sur un fichier temp
(avec en B1:B10 les chiffres de 1 à 10)
Ton code fonctionne bien en commentant la dernière ligne
(Code ci-dessous à mettre dans un Userform contenant un contrôle ListBox)
Test OK ici.
Code:
Private Sub ListBox1_Click()
Dim X As Range
Set X = Columns(2).Find(ListBox1.Value, , xlValues, xlPart, , , False)
If Not X Is Nothing Then
Application.GoTo Cells(X.Row, 2), Scroll:=True
End If
'Application.GoTo Cells(Me.ListBox1, 2)
End Sub
Code:
Private Sub UserForm_Initialize()
ListBox1.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
End Sub

 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Besoin d'un petit coup de main pour comprendre une macro

salut

un complément d'explications* :

ListBox1.Column(5) sous-entend que la liste a au moins 6 colonnes et que dans la 6ème il ya un nombre entier non nul (numéro de ligne de la feuille de référence)

* qui rejoint celles de Staple ;)
 

Chebe

XLDnaute Nouveau
Re : Besoin d'un petit coup de main pour comprendre une macro

Bonsoir

Merci Staple

Mais j'ai pas bien compris ton explication :
Et ici le 5 indique le numéro de ligne (basée sur la ListBox)
Cells(Me.ListBox1.Column(5), 2)
"Colomn" cela veut bien dire colonne
Comment se fait-il que le nombre 5 se réfère à une ligne ?


Merci Si

Tu m'as mis sur la bonne voie
J'ai augmenté le nombre de colonne dans ma Listbox avec une colonne supplémentaire
(J'ai en tout 7 colonnes)
J'ai donc corrigé en mettant (6) au lieu de (5)
J'ai aussi rajouter cette ligne :
Code:
.List(.ListCount - 1, 6) = Tablo(7, 1)
Mais je ne sais pas quoi sert cette ligne de commande ??
Si tu peux me le dire ?
Merci

Je ne comprends pas bien non à quoi correspond le chiffre 2 dans cette ligne
Code:
Set X = Columns(2).Find(ListBox1.Value, , xlValues, xlPart, , , False)
Je vois que là "Cololumns" comporte un "S"

Je suis également à la recherche d'une solution pour mettre la colonne 11 (Soit la colonne K)
Au format personnalisé "000"
Je sais que c'est possible, mais je ne sais pas comment faire

Merci
a+



A+
 

Si...

XLDnaute Barbatruc
Re : Besoin d'un petit coup de main pour comprendre une macro

salut

quelques modifications et explications

Dim X As Range
'recherche dans la colonne B -de columns(2)- le contenu sélectionné dans la colonne 1 de la liste)
Set X = Columns(2).Find(ListBox1.Value, , xlValues, xlPart, , , False)
'change de sélection de cellule en fonction du résultat
If Not X Is Nothing Then
'si trouvé, va à la cellule de ligne X.Row et de colonne 2 (ou B) en la plaçant en haut de l'écran
Application.GoTo Cells(X.Row, 2), Scroll:=True
Else
'sinon, va à la cellule de ligne dont le N° est en colonne 6 de la liste et de colonne 2 (ou B)
Application.GoTo Cells(ListBox1.Column(5), 2)
End if
End Sub

Quant au formatage des contenus d'une "ListBox", c'est une autre histoire...
 

Chebe

XLDnaute Nouveau
Re : Besoin d'un petit coup de main pour comprendre une macro

Bonjour

Merci pour ces explications
Je commence à mieux comprendre
Mais je m'interroge sur le SINON

Else
'sinon, va à la cellule de ligne dont le N° est en colonne 6 de la liste et de colonne 2 (ou B)
Application.GoTo Cells(ListBox1.Column(5), 2)

Comment il peut y avoir un sinon
puisque si je tape dans la TesxBox quelque chose qui n'existe pas
Forcément il n'y aura rien qui va apparaitre dans la Listbox
Et par conséquent je ne pourrais donc cliquer sur rien ??


Et au sujet du code
Code:
.List(.ListCount - 1, 6) = Tablo(7, 1)
Si je peux avoir aussi une explication
Merci d'avance

a+
 

Si...

XLDnaute Barbatruc
Re : Besoin d'un petit coup de main pour comprendre une macro

re,

Bonjour

Merci pour ces explications
Je commence à mieux comprendre
Mais je m'interroge sur le SINON Moi aussi !

C'est quoi cela ?

Comment il peut y avoir un sinon
puisque si je tape dans la TesxBox quelque chose qui n'existe pas
Forcément il n'y aura rien qui va apparaitre dans la Listbox
Et par conséquent je ne pourrais donc cliquer sur rien ??



Et au sujet du code
Code:
.List(.ListCount - 1, 6) = Tablo(7, 1)
Si je peux avoir aussi une explication
Merci d'avance

Je ne peux pas répondre quand le sujet est incomplet ! Comment est alimentée la liste ? Je ne l'ai pas vu dans le fichier que tu n'as pas joint :eek: !
 

Chebe

XLDnaute Nouveau
Re : Besoin d'un petit coup de main pour comprendre une macro

Re,

Je ne peux pas répondre quand le sujet est incomplet ! Comment est alimentée la liste ? Je ne l'ai pas vu dans le fichier que tu n'as pas joint !

C'est juste :rolleyes:

Je joins un bout de fichier avec la macro complète


En ce qui concerne le format d'une colonne de la Listbox, j'ai trouvé une discussion sur le Forum
Mais je n'ai pas su l'adapter à ma macro.
https://www.excel-downloads.com/threads/listbox-et-format-nombre.95950/

A+
 

Pièces jointes

  • Listbox.xlsm
    368.7 KB · Affichages: 56
  • Listbox.xlsm
    368.7 KB · Affichages: 55
  • Listbox.xlsm
    368.7 KB · Affichages: 63

Staple1600

XLDnaute Barbatruc
Re : Besoin d'un petit coup de main pour comprendre une macro

Bonsoir à tous

Chebe
Bonsoir
Merci Staple
Mais j'ai pas bien compris ton explication :
"Colomn" cela veut bien dire colonne
Comment se fait-il que le nombre 5 se réfère à une ligne ?
A+
Le premier réflexe à avoir quand on bloque sur une explication, c'est d'appuyer sur la touche F1.
(Que ce soit dans Excel, ou dans VBE )
Et donc F1 t'aurait affiché ceci
Extrait de l'aide VBA d'Excel
Utilisez Cells(ligne, colonne) où ligne est l'index de ligne et colonne l'index de colonne, pour renvoyer une seule cellule.
L'exemple suivant montre comment affecter la valeur 24 à la cellule A1.
Worksheets(1).Cells(1, 1).Value = 24
Donc si on reprend ton exemple:
Cells(Me.ListBox1.Column(5), 2) en s'aidant de l'aide, on comprends qu'ici
Me.ListBox1.Column(5) correspond à ligne et 2 à colonne

PS: Si tu avais testé le code exemple de mon précédent message, tu l'aurai aussi constaté de visu ;)
 
Dernière édition:

Chebe

XLDnaute Nouveau
Re : Besoin d'un petit coup de main pour comprendre une macro

Bonsoir Staple

Tu as raison, j'ai préféré chercher sur internet, mais sans résultat, d'où ma ma demande sur le Forum
L'aide de Microsoft s'adresse souvent plus à des personnes ayant déjà de solides connaissances
Ce qui n'est pas mon cas.


Bonsoir Si

Je pensais te relire après avoir joins ma macro et fichier exemple ?

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 203
Messages
2 086 196
Membres
103 153
dernier inscrit
SamirN