Problème affectation données sous VBA Excel
marccoumes
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
marccoumes Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
marccoumes Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai crée un tableau de suivi de production : j'ai 12 onglets, chacun portant le nom d'un mois de l'année. Chaque onglet est identique (sauf le nom du mois).
En vertical j'ai les jours du mois (JJ/MM/AAAA) céllules A7:A37
En horizontal j'ai les noms de mes produits (Abricots,Ananas, fraises etc) céllules B4:AT4
Etant novice en VBA, j'ai malgré tout réussi à créer une boite de dialogue qui m'invite à sélectionner le nom du Fruit, la date de production et enfin le champ de saisie pour indiquer le nombre de fruits produits
j'affecte le résultat de la sélection "Fruit" dans la celulle A1, la date en celulle C3, et le nbre de fruit fabriqués en celulle B2.
Je n'arrive pas à trouver l'astuce (malgré de nombreuses heures passées sur les forums et autres sites sur le sujet, je dois pas être bien doué....) pour aller directement affecter la valeur de B2 (saisie manuellement dans la boite de dialogue en fonction de A1 et de C3 que j'ai sélectionné dans ma liste déroulante.
Ci dessous la prog VBA que j'ai faite (la macro s'apelle "lance" ):
Sub Lance()
Load UserForm1
UserForm1.Show
End Sub
'Sub Validation()
'UserForm1.Hide
'
' [C3] = UserForm1.ComboBox1
'
'Unload UserForm1
'End Sub
La programmation pour la boîte de dialogue :
Private Sub ComboBox1_Change()
[C3] = UserForm1.ComboBox1
End Sub
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub
Private Sub Bt_Valider_Click()
[C1] = UserForm1.TextBox1 & " " & UserForm1.TextBox2
End Sub
Private Sub Label2_Click()
End Sub
Private Sub Label3_Click()
End Sub
Private Sub TextBox1_Change()
[A1] = UserForm1.TextBox1
End Sub
Private Sub TextBox2_Change()
[B1] = UserForm1.TextBox2
End Sub
Private Sub UserForm_Click()
End Sub
Merci d'avance à toute âme sensible à mon problème......
Cordialement
Marc
j'ai crée un tableau de suivi de production : j'ai 12 onglets, chacun portant le nom d'un mois de l'année. Chaque onglet est identique (sauf le nom du mois).
En vertical j'ai les jours du mois (JJ/MM/AAAA) céllules A7:A37
En horizontal j'ai les noms de mes produits (Abricots,Ananas, fraises etc) céllules B4:AT4
Etant novice en VBA, j'ai malgré tout réussi à créer une boite de dialogue qui m'invite à sélectionner le nom du Fruit, la date de production et enfin le champ de saisie pour indiquer le nombre de fruits produits
j'affecte le résultat de la sélection "Fruit" dans la celulle A1, la date en celulle C3, et le nbre de fruit fabriqués en celulle B2.
Je n'arrive pas à trouver l'astuce (malgré de nombreuses heures passées sur les forums et autres sites sur le sujet, je dois pas être bien doué....) pour aller directement affecter la valeur de B2 (saisie manuellement dans la boite de dialogue en fonction de A1 et de C3 que j'ai sélectionné dans ma liste déroulante.
Ci dessous la prog VBA que j'ai faite (la macro s'apelle "lance" ):
Sub Lance()
Load UserForm1
UserForm1.Show
End Sub
'Sub Validation()
'UserForm1.Hide
'
' [C3] = UserForm1.ComboBox1
'
'Unload UserForm1
'End Sub
La programmation pour la boîte de dialogue :
Private Sub ComboBox1_Change()
[C3] = UserForm1.ComboBox1
End Sub
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub
Private Sub Bt_Valider_Click()
[C1] = UserForm1.TextBox1 & " " & UserForm1.TextBox2
End Sub
Private Sub Label2_Click()
End Sub
Private Sub Label3_Click()
End Sub
Private Sub TextBox1_Change()
[A1] = UserForm1.TextBox1
End Sub
Private Sub TextBox2_Change()
[B1] = UserForm1.TextBox2
End Sub
Private Sub UserForm_Click()
End Sub
Merci d'avance à toute âme sensible à mon problème......
Cordialement
Marc
A voir également:
- Problème affectation données sous VBA Excel
- Liste déroulante excel - Guide
- Trier des données excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
7 réponses
Bonsoir,
Tu devrais déposer un fichier exemple sur cijoint.fr et coller ici le lien fourni.
Visiblement pas grand a envie de reconstruire ton tableau...
eric
Tu devrais déposer un fichier exemple sur cijoint.fr et coller ici le lien fourni.
Visiblement pas grand a envie de reconstruire ton tableau...
eric
Bjr Eric,
Ci joint le lien ou j'ai déposé le fichier : http://www.cijoint.fr/cjlink.php?file=cj201002/cijAr4py6R.xls
Cela sera effectivement plus parlant....
Merci et bonne journée
Marc
Ci joint le lien ou j'ai déposé le fichier : http://www.cijoint.fr/cjlink.php?file=cj201002/cijAr4py6R.xls
Cela sera effectivement plus parlant....
Merci et bonne journée
Marc
tant que j'y suis j'ai un autre probleme avec la combobox : lorsque je sélectionne une date dans le menu déroulant cela me le convertit automatiquement dans un format que je ne comprends pas.....et qui n'est pas le format de la date que je souhaite evidement (comme s'il fallait en rajouter....)
Marc
Marc
Bonjour,
Heuuu, non je n'avais pas prévu de traiter plus particulièrement cette question. C'est plus un conseil parce que tu n'avais pas eu de réponse...
Là je n'ai pas le temps mais je peux te donner une piste.
Il faut que tu recherches la colonne avec l'équivalent d'equiv() en vba (même syntaxe mais mot en anglais) avec par exemple
colonne=application.worksheetfunction.match("ton fruit",range(2:2);0)
"ton fruit" peut être une variable, 2:2 la ligne où son noté tes fruits sur la feuille.
Pareil pour la date en A:A
Et tu remplis la cellule avec cells(ligne,colonne)="bla bla bla"
eric
Heuuu, non je n'avais pas prévu de traiter plus particulièrement cette question. C'est plus un conseil parce que tu n'avais pas eu de réponse...
Là je n'ai pas le temps mais je peux te donner une piste.
Il faut que tu recherches la colonne avec l'équivalent d'equiv() en vba (même syntaxe mais mot en anglais) avec par exemple
colonne=application.worksheetfunction.match("ton fruit",range(2:2);0)
"ton fruit" peut être une variable, 2:2 la ligne où son noté tes fruits sur la feuille.
Pareil pour la date en A:A
Et tu remplis la cellule avec cells(ligne,colonne)="bla bla bla"
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
il faut parcourir la liste des fruits et des jours pour trouver la ligne/colonne (grace a .row et .column pour extraire le numéro de la colonne/ligne)
ensuite tu construit l'adresse de la cellule ou sera écrit l'info en associant la colonne et la ligne récupéré
ensuite tu construit l'adresse de la cellule ou sera écrit l'info en associant la colonne et la ligne récupéré
Bonjour et merci pour ton aide.
le seul hic est que je suis totalement novice en VBA et donc tout ceci est du charabia....j'ai bien essayé d'écrire quelquechose, mais il y a plein d'erreurs car je ne maîtrise pas la syntaxe...
Voila en Français ce que ça donne :
Si la variabe [A1] (=celulle A1) est trouvée dans la plage B4:BD4 ET que la variable [C3] (celulle C3) est trouvée dans la plage A7:A37, ALORS il faut copier la variable [B2] (celulle B2) à l'intersection du N° de colonne et du N° de ligne correspondant et ce dans la plage B7:BD37
Je ne sais pas comment faire le test pour l'intersection et comment aller copier la valeur qui m'ntéresse à l'intersection ds deux autres variables.
Peux tu eclairer ma lanterne ????
D'avance merci
Marc
le seul hic est que je suis totalement novice en VBA et donc tout ceci est du charabia....j'ai bien essayé d'écrire quelquechose, mais il y a plein d'erreurs car je ne maîtrise pas la syntaxe...
Voila en Français ce que ça donne :
Si la variabe [A1] (=celulle A1) est trouvée dans la plage B4:BD4 ET que la variable [C3] (celulle C3) est trouvée dans la plage A7:A37, ALORS il faut copier la variable [B2] (celulle B2) à l'intersection du N° de colonne et du N° de ligne correspondant et ce dans la plage B7:BD37
Je ne sais pas comment faire le test pour l'intersection et comment aller copier la valeur qui m'ntéresse à l'intersection ds deux autres variables.
Peux tu eclairer ma lanterne ????
D'avance merci
Marc
Exact, j'avais oublié le .column au bout
Bonjour et merci pour ton aide.
le seul hic est que je suis totalement novice en VBA et donc tout ceci est du charabia....j'ai bien essayé d'écrire quelquechose, mais il y a plein d'erreurs car je ne maîtrise pas la syntaxe...
Voila en Français ce que ça donne :
Si la variabe [A1] (=celulle A1) est trouvée dans la plage B4:BD4 ET que la variable [C3] (celulle C3) est trouvée dans la plage A7:A37, ALORS il faut copier la variable [B2] (celulle B2) à l'intersection du N° de colonne et du N° de ligne correspondant et ce dans la plage B7:BD37
Je ne sais pas comment faire le test pour l'intersection et comment aller copier la valeur qui m'ntéresse à l'intersection ds deux autres variables.
Sans abuser de ton temps précieux, Peux tu néanmoins éclairer ma lanterne ????
D'avance merci
Marc
le seul hic est que je suis totalement novice en VBA et donc tout ceci est du charabia....j'ai bien essayé d'écrire quelquechose, mais il y a plein d'erreurs car je ne maîtrise pas la syntaxe...
Voila en Français ce que ça donne :
Si la variabe [A1] (=celulle A1) est trouvée dans la plage B4:BD4 ET que la variable [C3] (celulle C3) est trouvée dans la plage A7:A37, ALORS il faut copier la variable [B2] (celulle B2) à l'intersection du N° de colonne et du N° de ligne correspondant et ce dans la plage B7:BD37
Je ne sais pas comment faire le test pour l'intersection et comment aller copier la valeur qui m'ntéresse à l'intersection ds deux autres variables.
Sans abuser de ton temps précieux, Peux tu néanmoins éclairer ma lanterne ????
D'avance merci
Marc
ca devrai faire un truc dans ce genre là
le commentaire entre /* et */ sont pour ta compréhension, tu doit les enlever quand tu copira le code (sinon ca bug ^^)
Dim l As Integer Dim c As Integer With Sheets("feuil1") While (.Cells(4, i).Value <> "" And .Cells(i, 1).Value <> "") Or (l = "" And c = "")/*tant que la fin de ta ligne de fruit et de ta colonne de date n'est pas atteinte ou que les valeurs cherché ne sont pas trouvé alors on continu le parcours*/ If .Cells(4, i).Value = .Range("A1").Value Then c = i If .Cells(i, 1).Value = .Range("C3").Value Then l = i i = i + 1 Wend If l <> "" And c <> "" Then .Cells(l, c).Value = .Range("B2").Value End With
le commentaire entre /* et */ sont pour ta compréhension, tu doit les enlever quand tu copira le code (sinon ca bug ^^)
Merci pour ta réponse. Effectivement je n'aurais pas pu trouver tout seul malgré l'aide de VBA.
J'ai copié ton bout de prog sur la Private Sub CommandButton2_Click()
J'ai un bug sur une ligne : While (.Cells(4, i).Value <> "" And .Cells(i, 1).Value <> "") Or (l = "" And c = "")
Le système me met une messagebox avec "ereur d'exécution 1004" + "Erreur définie par l'application ou par le projet"
Ci joint le prog :
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub
Private Sub ListBox1_Change()
[C3] = UserForm1.ListBox1
End Sub
Private Sub TextBox1_Change()
[A1] = UserForm1.TextBox1
End Sub
Private Sub TextBox2_Change()
[B1] = UserForm1.TextBox2
End Sub
Private Sub CommandButton2_Click()
Dim l As Integer
Dim c As Integer
With Sheets("janvier")
While (.Cells(4, i).Value <> "" And .Cells(i, 1).Value <> "") Or (l = "" And c = "")
If .Cells(4, i).Value = .Range("A1").Value Then c = i
If .Cells(i, 1).Value = .Range("C3").Value Then l = i
i = i + 1
Wend
If l <> "" And c <> "" Then .Cells(l, c).Value = .Range("B2").Value
End With
End Sub
Private Sub UserForm_Click()
End Sub
Désolé de t'embêter encore une fois....mais on tient le bon bout !!! je l'espère, on a jamais été aussi près !!!
Encore merci pour ton aide
Cordialement
Marc
J'ai copié ton bout de prog sur la Private Sub CommandButton2_Click()
J'ai un bug sur une ligne : While (.Cells(4, i).Value <> "" And .Cells(i, 1).Value <> "") Or (l = "" And c = "")
Le système me met une messagebox avec "ereur d'exécution 1004" + "Erreur définie par l'application ou par le projet"
Ci joint le prog :
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub
Private Sub ListBox1_Change()
[C3] = UserForm1.ListBox1
End Sub
Private Sub TextBox1_Change()
[A1] = UserForm1.TextBox1
End Sub
Private Sub TextBox2_Change()
[B1] = UserForm1.TextBox2
End Sub
Private Sub CommandButton2_Click()
Dim l As Integer
Dim c As Integer
With Sheets("janvier")
While (.Cells(4, i).Value <> "" And .Cells(i, 1).Value <> "") Or (l = "" And c = "")
If .Cells(4, i).Value = .Range("A1").Value Then c = i
If .Cells(i, 1).Value = .Range("C3").Value Then l = i
i = i + 1
Wend
If l <> "" And c <> "" Then .Cells(l, c).Value = .Range("B2").Value
End With
End Sub
Private Sub UserForm_Click()
End Sub
Désolé de t'embêter encore une fois....mais on tient le bon bout !!! je l'espère, on a jamais été aussi près !!!
Encore merci pour ton aide
Cordialement
Marc
As tu pu regarder le lien pour mon problème de tableau ????
Merci d'avance
Cordialement