• Initiateur de la discussion Initiateur de la discussion JCA06
  • 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 !

JCA06

XLDnaute Occasionnel
Bonjour le Forum, et re-bonjour Thierry !

hé oui, pour ceux qui ne le savent pas encore, les trois lettres 'USF' sont un appeau spécial Thierry, selon une formule que j'ai vu dans un post aujourd'hui !

Voici mon soucis : la procédure ci-dessous fonctionne :

Sub Macro1()
'

Dim source As Workbook
Dim trame As Workbook
Dim propositions() As String
Dim propositions2() As String
Dim C As Range
Dim i As Integer, j As Integer
Dim Firstaddress As String

Set source = Workbooks(Workbooks.Count)
Set trame = Workbooks(Workbooks.Count - 1)
source.Activate
Set nomfcp = Range('FCP')
rechCol.TextBox1.Value = nomfcp

With trame.Sheets('trame').Range('B5:BZ5')
Set C = .Find(Left(rechCol.TextBox1.Value, Len(rechCol.TextBox1) - 16), _
LookIn:=xlValues)
If Not C Is Nothing Then
Firstaddress = C.Address
Do
ReDim Preserve propositions(1, i)
propositions(0, i) = C.Value
propositions(1, i) = C.Column
i = i + 1
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> Firstaddress
End If
End With

ReDim propositions2(0 To UBound(propositions, 2), 0 To UBound(propositions, 1))
For i = LBound(propositions, 2) To UBound(propositions, 2)
propositions2(i, 0) = propositions(0, i)
propositions2(i, 1) = propositions(1, i)
Next i

With rechCol.ListBox1
.ColumnCount = 2
.ColumnWidths = '200;10'
.List() = propositions2
End With

rechCol.Show

End Sub

Ceci me permet de faire apparaître mon USF avec une listbox en deux colonnes avec des noms et des n° de colonnes.

Mon problème est que si je reprend l'essentiel de ce code dans l'initialize de mon USF, cela ne marche pas !

A savoir, voici la macro appelante :
Option Explicit

Public nomfcp As Variant
Public source As Workbook
Public trame As Workbook


Sub Macro2()

Set source = Workbooks(Workbooks.Count)
Set trame = Workbooks(Workbooks.Count - 1)
source.Activate
Set nomfcp = Range('FCP')
rechCol.TextBox1.Value = nomfcp

rechCol.Show

Et voici l'initialize :
Option Explicit

Private Sub rechCol_Initialize()

Dim propositions() As String
Dim propositions2() As String
Dim C As Range
Dim i As Integer, j As Integer
Dim Firstaddress As String

With trame.Sheets('trame').Range('B5:BZ5')
Set C = .Find(Left(rechCol.TextBox1.Value, Len(rechCol.TextBox1) - 16), _
LookIn:=xlValues)
If Not C Is Nothing Then
Firstaddress = C.Address
Do
ReDim Preserve propositions(1, i)
propositions(0, i) = C.Value
propositions(1, i) = C.Column
i = i + 1
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> Firstaddress
End If
End With

ReDim propositions2(0 To UBound(propositions, 2), 0 To UBound(propositions, 1))
For i = LBound(propositions, 2) To UBound(propositions, 2)
propositions2(i, 0) = propositions(0, i)
propositions2(i, 1) = propositions(1, i)
Next i

With rechCol.ListBox1
.ColumnCount = 2
.ColumnWidths = '200;10'
.List() = propositions2
End With
End Sub

Quand je lance ma macro2, je n'ai que la textbox remplie, et rien dans la listbox 🙁

Alors, il est o&ugrave; le problème ??

Heureusement que vous êtes là, sinon j'aurai du mal à m'accrocher !
 
Bonsoir JCA, bonsoir le forum,

Je crois avoir trouvé ton problème. Tu peux renommer un UserForm comme tu le désires mais la procédure d'initialisation reste Private Sub
UserForm_Initialize() et non pas Private Sub rechCol_Initialize()...

J'ai un peu simplifié ton code, macro appelante :

Option Explicit

Public nomfcp As Variant
Public source As Workbook
Public trame As Workbook

Sub Macro2()
Set source = Workbooks(Workbooks.Count)
Set trame = Workbooks(Workbooks.Count - 1)
source.Activate
Set nomfcp = Range('FCP')
rechCol.Show
End Sub

Initialisation UserForm :
Option Explicit

Private Sub UserForm_Initialize()
Dim C As Range
Dim i As Integer
Dim Firstaddress As String
rechCol.TextBox1.Value = nomfcp
With rechCol.ListBox1
.ColumnCount = 2
.ColumnWidths = '200;10'
End With
With trame.Sheets('trame').Range('B5:BZ5')
Set C = .Find(Left(rechCol.TextBox1.Value, Len(rechCol.TextBox1) - 16), _
LookIn:=xlValues)
If Not C Is Nothing Then
Firstaddress = C.Address
Do
rechCol.ListBox1.AddItem
rechCol.ListBox1.List(i, 0) = C.Value
rechCol.ListBox1.List(i, 1) = C.Column
i = i + 1
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> Firstaddress
End If
End With
End Sub
 
Bonjour Robert, bonjour le Forum,

Hé ben j'aurais pu y passer des heures !!!

C'est que j'ai appris pas mal de choses sur ce forum, mais j'en maîtrise encore très peu. Du coup, quand ça ne marche pas, je doute un peu de tout !

Et en plus, le AddItem, c'est exactement ce qu'il me fallait !
Je languis presque demain de retourner au boulot pour voir ça !

Merci Robert !
 
Bonjour Jean Charles, Robert, le Forum

J'ai du louper un Truc JCA, qu'entends-tu par :
hé oui, pour ceux qui ne le savent pas encore, les trois lettres \\'USF\\' sont un appeau spécial
Thierry, selon une formule que j'ai vu dans un post aujourd'hui !

C'est vrai que mercredi j'étais assez à la bouure !!

Sinon pour ton problème Robert a parfaitement répondu, mais pour un petit complément pour éviter cette erreur que je définis de 'classique' sur le nom du UserForm pour l'évènement 'Initialize', en fait je ne tape jamais ces instructions, j'utilise VBE pour tous les évènements disponibles pour tous les Contrôles :



Avec cette méthode 2 avantages :

1) je tape moins !!!
2) je ne peux pas me planter dans la syntax !!! lol

Bonne Journée et fin de semaine !!!
@+Thierry
 
Bonjour Thierry, bonjour le Forum,

L'explication de mon histoire d'appeau se trouve dans Lien supprimé dans un post d'Abel.
Je l'ai repris car sur le présent fil, j'ai commencé en disant bonjour le Forum et re-bonjour Thierry, sachant que tu allais certainement lire ce message dont le titre contenait le code secret d'appel 'USF' !!

En tout cas, je m'en souviendrai de ce piège de noms de macro !

Du coup, j'ai avancé mais j'aimerai améliorer une copie de range non contig&uuml;es. Je vais chercher ce qui se dit à ce sujet.

A plus !
 
- 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

Discussions similaires

Réponses
5
Affichages
703
Réponses
10
Affichages
531
Réponses
4
Affichages
580
  • Question Question
Réponses
7
Affichages
370
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
5
Affichages
477
Retour