Explications

azerty67

XLDnaute Occasionnel
:)Bonjour à tous,

J'aimerais une explication détaillée à propos de ce code, merci.


Private Sub ComboBox1_Change()
For n = 9 To 20
Me.Controls("Textbox" & n) = Sheets("Natzwiller").Cells(ComboBox1.ListIndex + 2, n - 7).Value
Next n
End Sub


avec 12 texbox le code fonctionne mais si je retire 4 texbox j'ai une erreur
au niveau :

Me.Controls("Textbox" & n) = Sheets("Natzwiller").Cells(ComboBox1.ListIndex + 2, n - 7).Value


---> "objet spécifié introuvable"

Je ne comprend pas le code simplement:(
 

azerty67

XLDnaute Occasionnel
Re : Explications

Bonsoir azerty




J'ai regardé le code de ton USF ajouter; tes combos sont bien programmer :
pour aller ajouter ou modifier les données danS chaque feuilles ;tu n'as pas besoin d'autre USF.
Au plaisir de te lire

Bonsoir,

Merci, mais par la deuxième combo je ne vois pas le ou les n° de commande lorsque je selectionne un client par la premiere combo
et les textbox ne me remontent pas les données ?:)
 

fanfan38

XLDnaute Barbatruc
Re : Explications

Bonjour
Je suis d'accord avec Roro l'userform ajouter suffit.
J'ai fait quelques modifs
Si tu double clic sur une ligne: ajouter est lancé
tu peux cliquer sur nouvelle pour une nouvelle fiche
sinon la fiche sur laquelle tu as cliquée peux etre modifié...

A+ François
 

azerty67

XLDnaute Occasionnel
Re : Explications

Bonjour
Je suis d'accord avec Roro l'userform ajouter suffit.
J'ai fait quelques modifs
Si tu double clic sur une ligne: ajouter est lancé
tu peux cliquer sur nouvelle pour une nouvelle fiche
sinon la fiche sur laquelle tu as cliquée peux etre modifié...

A+ François


:)le code est bien mais je reçois des erreurs à ce niveau quand je veux modifier :

With Sheets("Datas" & ComboBox2.Value)
l = .Range("A65536").End(xlUp).Row + 1
For i = 1 To 1
Select Case i
Case 3 ' combobox
.Cells(l, i).Value = Me.Controls("Combobox" & i).Value
Case Else
.Cells(l, i).Value = Me.Controls("Textbox" & i).Value
End Select
Next i
End With



ou creer une nouvelle fiche

Sheets(ComboBox2.Value).Select

merci
 
Dernière édition:

fanfan38

XLDnaute Barbatruc
Re : Explications

Je n'ai pas refait tout le code...
Visiblement l'erreur vient de for i=1 to 1 une boucle qui ne boucle pas? jamais vu...
Je mettrai for i=2 to 9...
Je n'ai pas compris à quoi sert la feuille data...
J'ai vu que tu as un bouton... mais si tu double clic sur une feuille Dans l'userform "ajouter" j'ai ajouter 2 boutons d'option. Si tu selectionnes nouvelle ça ajoutes une fiche.
A+ François
 

azerty67

XLDnaute Occasionnel
Re : Explications

Je n'ai pas refait tout le code...
Visiblement l'erreur vient de for i=1 to 1 une boucle qui ne boucle pas? jamais vu...
Je mettrai for i=2 to 9...
Je n'ai pas compris à quoi sert la feuille data...
J'ai vu que tu as un bouton... mais si tu double clic sur une feuille Dans l'userform "ajouter" j'ai ajouter 2 boutons d'option. Si tu selectionnes nouvelle ça ajoutes une fiche.
A+ François

:)Encore merci je vais regarder
Sur les feuilles commençant par le mot "Datas" c.a.d Datas_Natzwiller par ex je reporte le numéro de commande saisi lors du remplissage d'une nouvelle commande. Ceci me permet grace à un autre userform et une combo listant les n° de commandes ainsi reportés de remplir ces feuilles en y ajoutant des frais mensuels. Tu peux le voir sur les autres feuilles commençant par "Datas"

Je n'ai pas trouvé d'autres solutions

Je reçois aussi ce message quand je veux modifier une commande :

Incompatibilité de type

----> l = CInt(ajouter.Label26.Caption) 'ligne pour modifier

et:

L'indice n'appartient pas à la sélection quand je clique sur nouvelle fiche

----> Sheets(ComboBox2.Value).Select
 
Dernière édition:

azerty67

XLDnaute Occasionnel
Re : Explications

:)Encore merci je vais regarder
Sur les feuilles commençant par le mot "Datas" c.a.d Datas_Natzwiller par ex je reporte le numéro de commande saisi lors du remplissage d'une nouvelle commande. Ceci me permet grace à un autre userform et une combo listant les n° de commandes ainsi reportés de remplir ces feuilles en y ajoutant des frais mensuels. Tu peux le voir sur les autres feuilles commençant par "Datas"

Je n'ai pas trouvé d'autres solutions


:)Bonjour,

Si quelqu'un a une autre idée ? Merci
 

azerty67

XLDnaute Occasionnel
Re : Explications

Bonjour
Ci joint fichier corrigé...
Pour les mois pourquoi ne pas utiliser les colonnes vides de la commande (masquer ci necessaire)

A+ François

Bonsoir François,

C'est vrai que je n'y avais pas pensé... :rolleyes:, économie de codes, moins de feuilles..

Avec ton astuce, il faudra donc que je modifie mon userform de "gestion des mois", je vais essayer mais suis pas sur d'y arriver :(

Pourrais-tu me laisser des explications sur tes codes ? Merci, j'aimerais
comprendre tout ceci :)

J'ai essayé ton code, il y a un léger problème.
Lorsque je clique par ex dans la feuille "Natzwiller" mais que je souhaite modifier une commande de l'Espagne la combo "N° de commande" ne fonctionne pas bien. Elle ne me remonte pas les bonne infos et garde les commandes précédentes en mémoire, merci.
 
Dernière édition:

fanfan38

XLDnaute Barbatruc
Re : Explications

Quand tu es sur une feuille, tu clic sur le nom de la feuille avec le bouton droit et tu choisis "Visualiser le code"
Dans la liste de gauche tu selectionnes woorksheet ensuite dans celle de droite tu choisis "before double clic"
A chaque double clic sur cette feuille cette macro est appelé automatiquement...
la cellule qui a été sélectionné lors du double clic s'appelle Target
lig = Target.Row < cette fonction (row) donne la ligne de la cellule selectionnée
ajouter.ComboBox2.Value = ActiveSheet.Name >on dit à la combobox2 le nom de la feuille (nom du client)
ajouter.ComboBox4.Value = Cells(lig, 1).Value >on dit à la 2eme combobox de prendre la valeur de la cellule 1

ajouter.TextBox2.Value = Cells(lig, 2).Value>on dit à la textbox de prendre la valeur de la cellule 2
cells(ligne,colonne) est la même chose que range("xy")...
ajouter.Label26.Caption = lig > j'ai ajouté ce label pour garder la ligne
ajouter.OptionButton1 = True > j(ai dit au 1er bouton qu'il est coché...
ajouter.Show >et enfin je montre l'userform...
Pour les boutons d'option je ne fais que effacer l'userform si tu clic sur le bouton nouveau
et dans ce cas le label26 prend comme valeur la dernière ligne
Quand tu ne comprends pas une commande dans une macro, tu la sélectionnes et tu clic sur F1 (ça aide)

A+ François
 

azerty67

XLDnaute Occasionnel
Re : Explications

Quand tu es sur une feuille, tu clic sur le nom de la feuille avec le bouton droit et tu choisis "Visualiser le code"
Dans la liste de gauche tu selectionnes woorksheet ensuite dans celle de droite tu choisis "before double clic"
A chaque double clic sur cette feuille cette macro est appelé automatiquement...
la cellule qui a été sélectionné lors du double clic s'appelle Target
lig = Target.Row < cette fonction (row) donne la ligne de la cellule selectionnée
ajouter.ComboBox2.Value = ActiveSheet.Name >on dit à la combobox2 le nom de la feuille (nom du client)
ajouter.ComboBox4.Value = Cells(lig, 1).Value >on dit à la 2eme combobox de prendre la valeur de la cellule 1

ajouter.TextBox2.Value = Cells(lig, 2).Value>on dit à la textbox de prendre la valeur de la cellule 2
cells(ligne,colonne) est la même chose que range("xy")...
ajouter.Label26.Caption = lig > j'ai ajouté ce label pour garder la ligne
ajouter.OptionButton1 = True > j(ai dit au 1er bouton qu'il est coché...
ajouter.Show >et enfin je montre l'userform...
Pour les boutons d'option je ne fais que effacer l'userform si tu clic sur le bouton nouveau
et dans ce cas le label26 prend comme valeur la dernière ligne
Quand tu ne comprends pas une commande dans une macro, tu la sélectionnes et tu clic sur F1 (ça aide)

A+ François

:)Merci je vais cogiter à présent.

Possibilité de ne sélectionner que les cellules du tableau et non toute la feuille ?
:)
 

fanfan38

XLDnaute Barbatruc
Re : Explications

Rows(x).Select pour sélectionner une ligne
Columns(x).Select pour sélectionner une colonne
range("a5:c15").select pour sélectionner plusieurs cellules...
peux éventuellement être remplacé par
Range(Cells(ligne1, colonne1), Cells(ligne2, colonne2)).Select

A+ François
 

Discussions similaires

Réponses
6
Affichages
396

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD