Combobox petit complément

Le
Alba
Bonjour,

J'ai donc un userform que j'utilise sur une feuille nommée "Client"

Dans cette userform j'ai (entre autres) combobx1 et combobox2

ils sont relié de façon a ce que le choix de l'un me donne le résultat
de l'autre et inversément.
C'est parfait !

C'est parfait si je suis sur la feuille qui alimente mes combobox
nommée "materiel"

Mais moi je veux pouvoir travailler avec mon userfom sur la feuille
"Client" .
et là du coup, mes combobox vont chercher des données qui sont dans
cette feuille, au lieu de garder celles qui sont dans la feuille
materiel !!!

En somme ces combobox, ils s'alimentent selon où je me trouve, et je
ne sais pas comment les obliger a garder la bonne source qui est dans
ma feuille materiel, avec ce que j'ai comme code ici :
Je dois lui préciser quelque chose mais je ne sais pas quoi !?

Dim LigneSAP As Integer
Dim InChange As Boolean
Dim AEnregistrer As Boolean

Private Sub ComboBox1_Change()

If Not InChange Then
InChange = True
Me.ComboBox1 = Me.ComboBox1
AEnregistrer = True
InChange = False

With Me
LigneSAP = .ComboBox1.ListIndex + 2

.ComboBox2 = Cells(LigneSAP, 9)
End With
InChange = False
End If
End Sub
-
Private Sub ComboBox2_Change()

If Not InChange Then
InChange = True
Me.ComboBox2 = Me.ComboBox2
AEnregistrer = True
InChange = False

With Me
LigneSAP = .ComboBox2.ListIndex + 2

.ComboBox1 = Cells(LigneSAP, 10)
End With
InChange = False
End If

End Sub
=
--
Private Sub UserForm_Initialize()

With Me
.ComboBox2.RowSource = "Materiel!" & Range("I2",
Range("I2").End(xlDown)).Address
.ComboBox2.ListIndex = 1
.ComboBox1.RowSource = "Materiel!" & Range("J2",
Range("J2").End(xlDown)).Address

End With
AEnregistrer = False
End Sub



Merci de votre aide, très bonne journée
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4231591
Dans tous tes procédures :
à chaque fois que tu désignes une cellule, si cette cellule n'appartient
pas à la feuille active, tu dois faire référence à la feuille à laquelle
cette cellule fait référence ...

Worksheets("NomDeLaFeuille").cells( ...) = Me.Combobox1.Value

Exemple :
'---------------------
Private Sub UserForm_Initialize()

With Worksheets("Materiel")
Me.ComboBox2.RowSource = .Name & "!" & .Range("I2", .Range("I2").End(xlDown)).Address
Me.ComboBox2.ListIndex = 1
Me.ComboBox1.RowSource = .Name & "!" & .Range("J2", .Range("J2").End(xlDown)).Address
End With
AEnregistrer = False
End Sub
'---------------------



"Alba"
Bonjour,

J'ai donc un userform que j'utilise sur une feuille nommée "Client"

Dans cette userform j'ai (entre autres) combobx1 et combobox2

ils sont relié de façon a ce que le choix de l'un me donne le résultat
de l'autre et inversément.
C'est parfait !

C'est parfait si je suis sur la feuille qui alimente mes combobox
nommée "materiel"

Mais moi je veux pouvoir travailler avec mon userfom sur la feuille
"Client" .
et là du coup, mes combobox vont chercher des données qui sont dans
cette feuille, au lieu de garder celles qui sont dans la feuille
materiel !!!

En somme ces combobox, ils s'alimentent selon où je me trouve, et je
ne sais pas comment les obliger a garder la bonne source qui est dans
ma feuille materiel, avec ce que j'ai comme code ici :
Je dois lui préciser quelque chose mais je ne sais pas quoi !?

Dim LigneSAP As Integer
Dim InChange As Boolean
Dim AEnregistrer As Boolean

Private Sub ComboBox1_Change()

If Not InChange Then
InChange = True
Me.ComboBox1 = Me.ComboBox1
AEnregistrer = True
InChange = False

With Me
LigneSAP = .ComboBox1.ListIndex + 2

.ComboBox2 = Cells(LigneSAP, 9)
End With
InChange = False
End If
End Sub
----------------------------------------------------------------------
Private Sub ComboBox2_Change()

If Not InChange Then
InChange = True
Me.ComboBox2 = Me.ComboBox2
AEnregistrer = True
InChange = False

With Me
LigneSAP = .ComboBox2.ListIndex + 2

.ComboBox1 = Cells(LigneSAP, 10)
End With
InChange = False
End If

End Sub
--------------------------------------------------------------------------------------------
Private Sub UserForm_Initialize()

With Me
.ComboBox2.RowSource = "Materiel!" & Range("I2",
Range("I2").End(xlDown)).Address
.ComboBox2.ListIndex = 1
.ComboBox1.RowSource = "Materiel!" & Range("J2",
Range("J2").End(xlDown)).Address

End With
AEnregistrer = False
End Sub



Merci de votre aide, très bonne journée
Alba
Le #4231571
On 4 mar, 14:13, "MichDenis"
Dans tous tes procédures :
à chaque fois que tu désignes une cellule, si cette cellule n'apparti ent
pas à la feuille active, tu dois faire référence à la feuille à laquelle
cette cellule fait référence ...

Worksheets("NomDeLaFeuille").cells( ...) = Me.Combobox1.Value

Exemple :
'---------------------
Private Sub UserForm_Initialize()

With Worksheets("Materiel")
Me.ComboBox2.RowSource = .Name & "!" & .Range("I2", .Range("I2").En d(xlDown)).Address
Me.ComboBox2.ListIndex = 1
Me.ComboBox1.RowSource = .Name & "!" & .Range("J2", .Range("J2").En d(xlDown)).Address
End With
AEnregistrer = False
End Sub
'---------------------
Le principe est logique effectivement mais j'ai encore de la peine

(doux euphémisme !), je dois avoir quelque chose en trop maintenant !
J'ai fait :

Private Sub ComboBox1_Change()
If Not InChange Then
InChange = True
Me.ComboBox1 = Me.ComboBox1
AEnregistrer = True
InChange = False

Worksheets("Materiel").Cells(9) = Me.ComboBox1.Value

With Me
LigneSAP = .ComboBox1.ListIndex + 2
.ComboBox2 = Cells(LigneSAP, 9)
End With
InChange = False
End If
End Sub

MichDenis
Le #4231521
.ComboBox2 = Cells(LigneSAP, 9)

A ) Dans cette ligne de code, Où ta référence à la feuille

B ) Si tu as un problème, sois plus précis... quelle est la nature du problème ?
dans quelle procédure ?


"Alba"
On 4 mar, 14:13, "MichDenis"
Dans tous tes procédures :
à chaque fois que tu désignes une cellule, si cette cellule n'appartient
pas à la feuille active, tu dois faire référence à la feuille à laquelle
cette cellule fait référence ...

Worksheets("NomDeLaFeuille").cells( ...) = Me.Combobox1.Value

Exemple :
'---------------------
Private Sub UserForm_Initialize()

With Worksheets("Materiel")
Me.ComboBox2.RowSource = .Name & "!" & .Range("I2", .Range("I2").End(xlDown)).Address
Me.ComboBox2.ListIndex = 1
Me.ComboBox1.RowSource = .Name & "!" & .Range("J2", .Range("J2").End(xlDown)).Address
End With
AEnregistrer = False
End Sub
'---------------------
Le principe est logique effectivement mais j'ai encore de la peine

(doux euphémisme !), je dois avoir quelque chose en trop maintenant !
J'ai fait :

Private Sub ComboBox1_Change()
If Not InChange Then
InChange = True
Me.ComboBox1 = Me.ComboBox1
AEnregistrer = True
InChange = False

Worksheets("Materiel").Cells(9) = Me.ComboBox1.Value

With Me
LigneSAP = .ComboBox1.ListIndex + 2
.ComboBox2 = Cells(LigneSAP, 9)
End With
InChange = False
End If
End Sub

h2so4
Le #4231481
bonjour,

les adaptations que tu as faites comportent des erreurs, j'en vois 2

Private Sub ComboBox1_Change()
If Not InChange Then
InChange = True
Me.ComboBox1 = Me.ComboBox1
AEnregistrer = True
InChange = False

Worksheets("Materiel").Cells(LigneSAP,9) = Me.ComboBox1.Value
'correction 1-----------------^^^^^^^^
With Me
LigneSAP = .ComboBox1.ListIndex + 2
.ComboBox2 = Worksheets("Materiel").Cells(LigneSAP, 9)
'correction 2----^^^^^^^^^^^^^^^^^^^
End With
InChange = False
End If
End Sub


--
--
h2so4
play triogical at http://www.triogical.com
"Alba" news:
On 4 mar, 14:13, "MichDenis"
Dans tous tes procédures :
à chaque fois que tu désignes une cellule, si cette cellule n'appartient
pas à la feuille active, tu dois faire référence à la feuille à laquelle
cette cellule fait référence ...

Worksheets("NomDeLaFeuille").cells( ...) = Me.Combobox1.Value

Exemple :
'---------------------
Private Sub UserForm_Initialize()

With Worksheets("Materiel")
Me.ComboBox2.RowSource = .Name & "!" & .Range("I2",
.Range("I2").End(xlDown)).Address
Me.ComboBox2.ListIndex = 1
Me.ComboBox1.RowSource = .Name & "!" & .Range("J2",
.Range("J2").End(xlDown)).Address
End With
AEnregistrer = False
End Sub
'---------------------
Le principe est logique effectivement mais j'ai encore de la peine

(doux euphémisme !), je dois avoir quelque chose en trop maintenant !
J'ai fait :

Private Sub ComboBox1_Change()
If Not InChange Then
InChange = True
Me.ComboBox1 = Me.ComboBox1
AEnregistrer = True
InChange = False

Worksheets("Materiel").Cells(9) = Me.ComboBox1.Value

With Me
LigneSAP = .ComboBox1.ListIndex + 2
.ComboBox2 = Cells(LigneSAP, 9)
End With
InChange = False
End If
End Sub

Alba
Le #4231451
Et bien j'ai donc copié le Private Sub UserForm_Initialize() comme tu
me l'indique :

With Worksheets("Materiel")
Me.ComboBox2.RowSource = .Name & "!"
& .Range("I2", .Range("I2").End(xlDown)).Address
Me.ComboBox2.ListIndex = 1
Me.ComboBox1.RowSource = .Name & "!"
& .Range("J2", .Range("J2").End(xlDown)).Address
End With
AEnregistrer = False
End Sub

Mais lorsque tu me dis :

tu dois faire référence à la feuille à laquelle
cette cellule fait référence ...

Worksheets("NomDeLaFeuille").cells( ...) = Me.Combobox1.Value

Je ne sais pas où je dois placé cette partie ???

J'avais essayé d'ajouter cette précision de Worksheets et de
cells( ...) comme cela :

Private Sub ComboBox1_Change()
If Not InChange Then
InChange = True
Me.ComboBox1 = Me.ComboBox1
AEnregistrer = True
InChange = False

Worksheets("Materiel").Cells(9) = Me.ComboBox1.Value

With Me
LigneSAP = .ComboBox1.ListIndex + 2
.ComboBox2 = Cells(LigneSAP, 9)
End With
InChange = False
End If
End Sub

...mais de toute évidence ce n'est pas juste, je garde toujours le
même problème.
Alba
Le #4231371
Excuse moi on a dû posté en même temps.


Donc maintenant dans la totalité j'ai ceci :

Dim LigneSAP As Integer
Dim InChange As Boolean
Dim AEnregistrer As Boolean
------------------------------------------------
Private Sub ComboBox1_Change()
If Not InChange Then
InChange = True
Me.ComboBox1 = Me.ComboBox1
AEnregistrer = True
InChange = False

Worksheets("Materiel").Cells(LigneSAP, 9) = Me.ComboBox1.Value
With Me
LigneSAP = .ComboBox1.ListIndex + 2
.ComboBox2 = Worksheets("Materiel").Cells(LigneSAP, 9)
End With
InChange = False
End If
End Sub
----------------------------------------------------------------------------
Private Sub ComboBox2_Change()

If Not InChange Then
InChange = True
Me.ComboBox2 = Me.ComboBox2
AEnregistrer = True
InChange = False

Worksheets("Materiel").Cells(LigneSAP, 10) = Me.ComboBox2.Value

With Me
LigneSAP = .ComboBox2.ListIndex + 1
.ComboBox1 = Worksheets("Materiel").Cells(LigneSAP, 10)

End With
InChange = False
End If
End Sub
-------------------------------------------------------------------


Private Sub UserForm_Initialize()

With Worksheets("Materiel")
Me.ComboBox2.RowSource = .Name & "!"
& .Range("I2", .Range("I2").End(xlDown)).Address
Me.ComboBox2.ListIndex = 1
Me.ComboBox1.RowSource = .Name & "!"
& .Range("J2", .Range("J2").End(xlDown)).Address
End With
AEnregistrer = False
End Sub
-------------------------------------------
Pour Private Sub ComboBox2_Change() j'ai remplacé les comboBox 1 par
combobox 2

Ma colonne pour combobox1 est en 9
et
pour combobox 2 en 10
donc je remplace le 9 par le 10

mais j'ai un bug sur Worksheets("Materiel").Cells(LigneSAP, 10) =
Me.ComboBox2.Value

J'suis vraiment débutante j'suis navrée mais je ne sais pas ce que je
dois encore changer ??

Merci en tout cas de votre aide.
MichDenis
Le #4231261
| mais j'ai un bug sur
| Worksheets("Materiel").Cells(LigneSAP, 10) =Me.ComboBox2.Value

Si la variable "LigneSap" représente un chiffre entre 1 et 65536
Si la feuille "Materiel" existe vraiment
Il n'y a aucune raison que cela ne fonctionne pas !

Si tu as un message d'erreur, quel est-il ?




"Alba"

Excuse moi on a dû posté en même temps.


Donc maintenant dans la totalité j'ai ceci :

Dim LigneSAP As Integer
Dim InChange As Boolean
Dim AEnregistrer As Boolean
------------------------------------------------
Private Sub ComboBox1_Change()
If Not InChange Then
InChange = True
Me.ComboBox1 = Me.ComboBox1
AEnregistrer = True
InChange = False

Worksheets("Materiel").Cells(LigneSAP, 9) = Me.ComboBox1.Value
With Me
LigneSAP = .ComboBox1.ListIndex + 2
.ComboBox2 = Worksheets("Materiel").Cells(LigneSAP, 9)
End With
InChange = False
End If
End Sub
----------------------------------------------------------------------------
Private Sub ComboBox2_Change()

If Not InChange Then
InChange = True
Me.ComboBox2 = Me.ComboBox2
AEnregistrer = True
InChange = False

Worksheets("Materiel").Cells(LigneSAP, 10) = Me.ComboBox2.Value

With Me
LigneSAP = .ComboBox2.ListIndex + 1
.ComboBox1 = Worksheets("Materiel").Cells(LigneSAP, 10)

End With
InChange = False
End If
End Sub
-------------------------------------------------------------------


Private Sub UserForm_Initialize()

With Worksheets("Materiel")
Me.ComboBox2.RowSource = .Name & "!"
& .Range("I2", .Range("I2").End(xlDown)).Address
Me.ComboBox2.ListIndex = 1
Me.ComboBox1.RowSource = .Name & "!"
& .Range("J2", .Range("J2").End(xlDown)).Address
End With
AEnregistrer = False
End Sub
-------------------------------------------
Pour Private Sub ComboBox2_Change() j'ai remplacé les comboBox 1 par
combobox 2

Ma colonne pour combobox1 est en 9
et
pour combobox 2 en 10
donc je remplace le 9 par le 10

mais j'ai un bug sur Worksheets("Materiel").Cells(LigneSAP, 10) Me.ComboBox2.Value

J'suis vraiment débutante j'suis navrée mais je ne sais pas ce que je
dois encore changer ??

Merci en tout cas de votre aide.
Alba
Le #4231191
Au risque de ne pas trouver les bons termes dans mes explications, le
fichier sera plus explicite.

Et il bug donc sur Worksheets("Materiel").Cells(LigneSAP, 10)
=Me.ComboBox2.Value
http://cjoint.com/confirm.php?cjointÞvNgCxACR

merci bonne soirée
MichDenis
Le #4228791
Dans ces 2 procédures de ton module formulaire, la variable
dans ces 2 lignes de code :
Worksheets("Materiel").Cells(LigneSAP, 9) = Me.ComboBox1.Value
Et
Worksheets("Materiel").Cells(LigneSAP, 9) = Me.ComboBox2.Value

La variable LigneSap = 0 -> conclusion Cells(0,9) est impossible d'où
génération d'une erreur.
à toi de voir quelle est la valeur que la variable devrait avoir avant d'exécution
de la ligne de code dans chacune des procédures...

Une dernière observation, dans chacune des procédures, tu as un ligne de code ressemblant à ceci :
Me.ComboBox1 = Me.ComboBox1
Quelle est l'utilité d'une telle ligne de code ?

'----------------------------
Private Sub ComboBox1_Change()
If Not InChange Then
InChange = True
Me.ComboBox1 = Me.ComboBox1
AEnregistrer = True
InChange = False

Worksheets("Materiel").Cells(LigneSAP, 9) = Me.ComboBox1.Value

With Me
LigneSAP = .ComboBox1.ListIndex + 2
.ComboBox2 = Worksheets("Materiel").Cells(LigneSAP, 9)
End With
InChange = False
End If
End Sub
'----------------------------
Private Sub ComboBox2_Change()

If Not InChange Then
InChange = True
Me.ComboBox2 = Me.ComboBox2
AEnregistrer = True
InChange = False

Worksheets("Materiel").Cells(LigneSAP, 10) = Me.ComboBox2.Value

With Me
LigneSAP = .ComboBox2.ListIndex + 2
.ComboBox1 = Worksheets("Materiel").Cells(LigneSAP, 10)

End With
InChange = False
End If
End Sub
'----------------------------




"Alba"

Au risque de ne pas trouver les bons termes dans mes explications, le
fichier sera plus explicite.

Et il bug donc sur Worksheets("Materiel").Cells(LigneSAP, 10)
=Me.ComboBox2.Value
http://cjoint.com/confirm.php?cjointÞvNgCxACR

merci bonne soirée
Alba
Le #4228491
On 5 mar, 13:13, "MichDenis"
Dans ces 2 procédures de ton module formulaire, la variable
dans ces 2 lignes de code :
Worksheets("Materiel").Cells(LigneSAP, 9) = Me.ComboBox1.Value
Et
Worksheets("Materiel").Cells(LigneSAP, 9) = Me.ComboBox2.Value

La variable LigneSap = 0 -> conclusion Cells(0,9) est impossible d'où
génération d'une erreur.
à toi de voir quelle est la valeur que la variable devrait avoir avant d'exécution
de la ligne de code dans chacune des procédures...

Une dernière observation, dans chacune des procédures, tu as un ligne de code ressemblant à ceci :
Me.ComboBox1 = Me.ComboBox1
Quelle est l'utilité d'une telle ligne de code ?
--------------------------------------------------------------------------- ---------------------

c'est un userform que j'ai récupéré, ( il me sembe sur XLD) et il
était exactement ce dont j'avais besoin.
http://cjoint.com/confirm.php?cjointßsbOSymUS


alors j'ai souhaité l'installé sur mon classeur et tenter de l'adapter
à mes feuilles, mais je ne pensais pas que ce serait si difficile.

Alors à la question : Quelle est l'utilité d'une telle ligne de code ?
Je n'en sais rien du tout ? Si ce n'est que le choix d'un combobox
donnera le résultat de l'autre et inversément.
Mais je ne peux malheureusement pas du tout répondre à tes questions.
Merci quand même de ton aide .

Publicité
Poster une réponse
Anonyme