Modification de données à partir d'une combobox (besoin d'aide)

Ozons123

XLDnaute Junior
Bonjour le forum,

voilà je bloque littéralement face à un problème. J'ai fouillé sur le site et je n'ai pas réussit à trouver de solutions :( .

Explications:

a) Dans la combobox (Bouton documentation/Modifier/Combobox) apparaît uniquement les codes de la colonne B (code) dont l'option est à E. Si je sélectionne par exemple TOTO 04, j'ai bien dans mon userform les bonnes informations concernant le total , l'état , l'option et le gdg.

b) Maintenant je passe l'option de TOTO 04 à D. Dans la combobox TOTO 04 n'est plus présent (normal) mais si j'appel TOTO 05 il me donne comme information, le total , l'état , l'option et le gdg de TOTO 04 et non de TOTO 5.

Savez-vous comment pourrais-je régler ce problème?. Vous trouverez le fichier pour que mes explications soient plus limpides.

Vraiment un grand merci par avance pour celles et ceux qui souhaitent se pencher sur ce sujet.

Bonne journée

Ludovic
 

Pièces jointes

  • Final05.zip
    34.8 KB · Affichages: 36
  • Final05.zip
    34.8 KB · Affichages: 38
  • Final05.zip
    34.8 KB · Affichages: 36

Papaye

XLDnaute Occasionnel
Re : Modification de données à partir d'une combobox (besoin d'aide)

Bonjour Ozons, bonjour le Forum,

Le pb vient de ta macro
Private Sub ComboBox1_Change()
Dim Lgn&
Lgn = ComboBox1.ListIndex + 1
Si une de tes lignes (la 7 par exemple avec TOTO04) contient D en colonne état, elle n'est pas inclue dans ta liste. L'index DANS la liste de la ligne suivante (TOTO05) correpond donc à celle de la ligne TOTO04. Voilà pourquoi tu récupères les infos de TOTO04 quand tu appels TOTO05.
Pour contourner le pb, je créerai un tableau contenant la correspondance n° d'ordre dans la liste et n° de ligne dans tes données. Si tu nommes ton tableau "table"
Du genre :
TOTO01 n° dans liste=1 (=table(1,1) n° ligne=4 (=table(1,2))
TOTO02 2 (=table(2,1)) 5 (=table(2,2))
TOTO03 3 (=table(3,1)) 6 (=table(3,2))
TOTO05 4 ... 7 ...
Et lorsque tu renseignes les autres box tu mets
TextBox5.Value = Sheets("DATA").Cells(table(Lgn,2), 3)
au lieu de
TextBox5.Value = Sheets("DATA").Cells(Lgn + 3, 3)
et ainsi de suite ...

bon courage
 

Hervé

XLDnaute Barbatruc
Re : Modification de données à partir d'une combobox (besoin d'aide)

bonjour ozons

ton souci vient de cette ligne : Lgn = ComboBox1.ListIndex + 1

tu initialises la variable Lgn avec l'index de ta combobox, or celui-ci ne correpond plus à l'ordre des lignes de ta feuille DATA.en effet en sautant la ligne toto4, tu crée un décalage.

Plusieurs solutions sont possible, la plus simple est de faire une recherche en colonne B de la valeur de la combobox puis de se servir de cette cellule pour alimenter les controles.

un exemple de ce que ca pourrait donner pour l'alimentation des controles :

PHP:
'Modification des données Partie I <=> recherche des données
Private Sub ComboBox1_Change()
Dim c As Range

    Set c = Sheets("DATA").Columns("b").Find(ComboBox1)
    If Not c Is Nothing Then
        With Tableau '???????
            'COLONNE TOTAL
            TextBox5.Value = c.Offset(0, 1)
            'COLONNE ETAT
            TextBox6.Value = c.Offset(0, 2)
            'COLONNE GDG
            'là j'ai pas tout compris ou trouver le GDG
        End With
    End If

  'OPTION
    MODIFIER.OptionButton1.Value = c.Offset(0, 3) = "Option A"
    MODIFIER.OptionButton2.Value = c.Offset(0, 3) = "Option B"

End Sub
je n'ai pas alimenter la taxtbox CDG, ne comprenant pas d'ou venaient ces données.
a quoi correspond TABLEAU ????
il te faut faire la meme chose pour les boutons modifier et detruire.

salut

EDITION : salut papaye:)
 

Papaye

XLDnaute Occasionnel
Re : Modification de données à partir d'une combobox (besoin d'aide)

Salut Hervé,

Jolie solution !
Une question en passant ... comment fais tu pour présenter tes exemples (ici marqué code PHP) en couleur ?

Merci et bonjour de La Réunion
 

Ozons123

XLDnaute Junior
Re : Modification de données à partir d'une combobox (besoin d'aide)

Bonjour Papaye et Hervé,

tout d'abord vraiment un grand merci à vous deux. Papaye même si ta solution fonctionne je ne peux pas l'intégrer à mon fichier car celui-ci est un fichier test pour découvrir les subtilitées du Vba car toutes les routines qui ont été testées sur ce dernier vont être intégrées dans un projet plus large de gestion de bases de données qui devrait avoisiner plusieurs milliers de lignes.

Hervé je vais tester ton programme ce soir. J'ai effectivement la variable tableau qui ne sert strictement à rien. J'ai tellement bidouillé les fichiers que parfois il m'arrive de laisser des infos qui ne servent à rien :eek:

Pour le gdg dans l'onglet Data tu as dans la cellule C13 la gdg a rentrer. C'était pour tester l'écriture de données en validant un userform.
Par la suite il s'agira de données évolutives.
Je teste tes idées et si ok je poste le fichier remis à jour à la suite.

Encore merci pour votre aide à tous les deux. Vraiment sympa.

Bonne journée

Ludovic
 

Hervé

XLDnaute Barbatruc
Re : Modification de données à partir d'une combobox (besoin d'aide)

re papaye

merci pour ton commentaire.

ton idée de passer par tableau n'est pas mauvaise non plus.

personnellement, dans ces cas je passe par une colonne masquée dans la combobox ou je place les numéros de ligne, c'est un peu plus tordu comme solution.

pour la mise en page des codes, j'utilise les balises CODE,HTML, PHP.

salut
 

Ozons123

XLDnaute Junior
Re : Modification de données à partir d'une combobox (besoin d'aide)

Hervé,

tout fonctionne à merveille sauf pour le gdg. Je suis dans l'impossiblité de lui demander d'aller me vérifier la donnée dans l'onglet Stockage.

J'ai greffé:
' COLONNE GDG
'Sheets("STOCKAGE").TextBox7.value = C.Offset(0, 2)
=> Message d'erreur

Puis j'ai essayé ceci:
with Sheets("STOCKAGE).activate
TextBox7.value = C.Offset(0, 2)
end With

aucun message d'erreur mais il me fait apparaître E pour le GDG alors qu'il devrait me faire apparaître la cela correpondante à TOTO dans l'onglet stockage et donc du numérique ?
Exemple: CODE TOTO 05 GDG 5
J'arrive à la situtation:
TOTO 5 GDG = ETAT = E

J'ai greffé le fichier modifié en fonction des ton programme. Merci pour ton aide.

Ludovic
 

Pièces jointes

  • Final05.zip
    35.2 KB · Affichages: 67
  • Final05.zip
    35.2 KB · Affichages: 64
  • Final05.zip
    35.2 KB · Affichages: 66

Hervé

XLDnaute Barbatruc
Re : Modification de données à partir d'une combobox (besoin d'aide)

re


j'ai vraiment rien compris à cette histoire de CDG, mais c'est normal, je ne suis pas des plus malins.

essayes comme ceci :

' COLONNE GDG
TextBox7.Value = Sheets("STOCKAGE").Cells(C.Row, 2)

salut
 

Ozons123

XLDnaute Junior
Re : Modification de données à partir d'une combobox (besoin d'aide)

Merci Hervé, j'adore ta fausse modestie :D, cela fonctionne.

En fait pour le GDG quand tu valides le bouton Valider du userform Documenter il va copier la valeur de la cellule C13 de la feuille DATA dans la feuille STOCKAGE.

C'est simplement un test. Pourquoi tout simplement par la suite dans le fichier que je développe en parallère ce paramètre va évoluer avec le temps. Le fait
à un instant t de valider mon userform cela va permettre d'historiser la valeur
GDG dans la feuille stockage et de lancer des opérations en // avec cette valeur.

Merci encore pour tout. JE vais modifier les autres commandes pour voir l'impact.

Ludovic
 

Hervé

XLDnaute Barbatruc
Re : Modification de données à partir d'une combobox (besoin d'aide)

re

Je n'aime pas les vaniteux, mais encore moins les "faux modestes"

donc la remarque me concernant n'etait qu'une constatation de la réalité.

salut
 

Discussions similaires

Statistiques des forums

Discussions
312 082
Messages
2 085 169
Membres
102 804
dernier inscrit
edaguo