récupérer chaine de caractère dans une combobox via variable

chombriko

XLDnaute Junior
Bonjour,

Donc voilà travaillant sur un projet en vba excel , je recherche comment faire pour pouvoir récupérer des noms de clients ainsi que les machines qui leur sont assignées à partir de plusieurs feuilles , tout cela avec un UserForm multipage !

J'ai créer un UserForm qui en première page me demande de renseigner un nom de client dans une combobox.
Je récupère ainsi une variable qui me servira par la suite pour cela c'est bon j'ai réussi à faire !

Une fois le client saisie , il faudrait que je puisse avoir dans une autre combobox qui est en page deux toutes les machines que se client à en sa possession.
C'est la que sa se complique pour moi :(

En sachant que via la variable récupérer lors du renseignement du nom de client je peux ainsi retrouver si le client possède ou non une machine.
Dans le cas ou il en possède une ou plusieurs elle(s) devrai(en)t s'afficher dans la combobox et dans le cas ou il n'en possède pas une MsgBox " pas de machine chez ce client devrait s'afficher " .

J’envoie un fichier test qui reprend la manipulation souhaitée.


J'espère m'être bien exprimer :D

Bonne journée!
 

Pièces jointes

  • test usf.xls
    62.5 KB · Affichages: 73
  • test usf.xls
    62.5 KB · Affichages: 74
  • test usf.xls
    62.5 KB · Affichages: 76

chombriko

XLDnaute Junior
Re : récupérer chaine de caractère dans une combobox via variable

Bonjour,

Merci pour le temps consacré!

Après essai , lorsqu'il existe une marque associé au client cela marche par contre s'il n'y a pas de marque associé alors j'obtiens une erreur qui est la suivante : "L'indice n'appartient pas à la sélection" sur la ligne suivante :

For j& = 1 To UBound(T)

Je pense qu'il faudrait rajouter une condition qui permette de vérifier s'il y a ou non une marque associé , s'il n'y a pas de marque une MsgBox "pas de marque associé" devrait s'afficher.

:confused:
 

PMO2

XLDnaute Accro
Re : récupérer chaine de caractère dans une combobox via variable

Bonjour,

Après essai , lorsqu'il existe une marque associée au client cela marche par contre s'il n'y a pas de marque associée alors j'obtiens une erreur qui est la suivante : "L'indice n'appartient pas à la sélection"
Une nouvelle version traitant l'erreur (voir code cerné par des ###)
 

chombriko

XLDnaute Junior
Re : récupérer chaine de caractère dans une combobox via variable

Merci cela fonctionne très bien!

Par contre lorsque je met le code sur mon fichier original , une fois le client renseigné et que je clique sur suivant le programme s'arrête alors qu'il devrait m'afficher la deuxième page de l'USF ,c'est à dire la page pour renseigner la marque, pourtant j'utilise exactement le même USF que j'ai mis sur le fichier joint..
 

PMO2

XLDnaute Accro
Re : récupérer chaine de caractère dans une combobox via variable

N'étant pas en situation, je ne peux malheureusement pas aller plus loin.
Je n'indique que des pistes.
C'est à vous de les mettre en adéquation pour pouvoir obtenir ce que vous désirez.
Plongez-vous dans votre code en faisant du pas à pas ; vous pourrez vous rendre compte où se situe le dysfonctionnement et y pallier.
Si vous n'y arrivez pas, on peut toujours envisager mon intervention à titre professionnel.
Bon courage.
 

PMO2

XLDnaute Accro
Re : récupérer chaine de caractère dans une combobox via variable

Par contre serait il possible d'avoir quelques commentaires du programme envoyé parce que je n'arrive pas à tout saisir.

Voici quelques commentaires qui j'espère vous éclaireront

Code:
Dim S As Worksheet
Dim R As Range
Dim var As Variant
Dim i&
Dim j&
Dim cpt&
Dim T()   'tableau dynamique

Set S = Sheets("table equipement adresse")  'la feuille dans une variable objet Worksheet
Set R = S.[a1].CurrentRegion  'la plage entourant la cellule A1 (A1:C8 dans cet exemple)
var = R 'transfère toutes les données de la plage dans un Variant (cela donne l'équivalent d'un tableau bidimensionné)

For i& = 1 To UBound(var, 1)  'pour toutes les lignes du Variant

  If var(i&, 3) = Var_ID_Client Then  'si équivalence trouvée (i& est la ligne, 3 correspond à la 3ème colonne)
    cpt& = cpt& + 1                   'on incrémente le compteur de 1
    ReDim Preserve T(1 To cpt&)       'on redimensionne le tableau tout en préservant les données déjà inscrites
    T(cpt&) = var(i&, 2)              'on affecte la valeur dans le tableau dynamique
  End If

Next i&

'#####################################################################
'### modification 16/05/2012 : (s'il n'y a pas de marque associée) ###
If cpt& > 0 Then  '@@@ si le compteur est >0 (on a trouvé au moins une équivalence
  Me.MP1.Value = 1  'change la page du MultiPage
  Set S = Sheets("table equipement actif") 'MEME CHOSE QUE BOUCLE PRECEDENTE
  Set R = S.[a1].CurrentRegion 'on obtient la plage A1:A8 car la colonne B est vide
  Set R = R.Resize(R.Rows.Count, R.Columns.Count + 2) 'on étend la plage pour inclure les colonnes B et C
  var = R
  For i& = 1 To UBound(var, 1)
    For j& = 1 To UBound(T)
      If var(i&, 1) = T(j&) Then
        T(j&) = var(i&, 3)
      End If
    Next j&
  Next i&
  Nmarque.List = T
Else  '@@@ sinon
  MsgBox "Pas de marque associée"
End If
'#####################################################################
 

chombriko

XLDnaute Junior
Re : récupérer chaine de caractère dans une combobox via variable

Re ,

Je viens de résoudre mon problème :)

Seriez vous comment faire pour activer la cellule de la marque sélectionné (qui se trouve dans la table equipement actif en colonne C) ensuite faire un décalage de cellule et récupérer la valeur qui se trouve en colonne A et enfin enregistrer cette valeur dans une variable.

Pour le décalage je sais comment faire mais je bloque sur l'activation de la cellule pour la marque sélectionné.
 

Discussions similaires

Réponses
3
Affichages
301