Problème affectation données sous VBA Excel

Fermé
marccoumes Messages postés 15 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 11 mars 2010 - 2 févr. 2010 à 18:34
marccoumes Messages postés 15 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 11 mars 2010 - 11 mars 2010 à 16:16
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
A voir également:

7 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
2 févr. 2010 à 23:49
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
0
marccoumes Messages postés 15 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 11 mars 2010 4
10 févr. 2010 à 18:49
Bonjour,

As tu pu regarder le lien pour mon problème de tableau ????

Merci d'avance

Cordialement
0
marccoumes Messages postés 15 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 11 mars 2010 4
3 févr. 2010 à 13:50
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
0
marccoumes Messages postés 15 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 11 mars 2010 4
3 févr. 2010 à 13:53
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
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
11 févr. 2010 à 07:41
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
11 févr. 2010 à 07:53
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é
0
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
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
11 févr. 2010 à 07:58
Exact, j'avais oublié le .column au bout
0
marccoumes Messages postés 15 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 11 mars 2010 4
11 févr. 2010 à 11:16
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
0
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
11 févr. 2010 à 11:41
ca devrai faire un truc dans ce genre là
    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 ^^)
0
marccoumes Messages postés 15 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 11 mars 2010 4
11 févr. 2010 à 17:04
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
0
marccoumes Messages postés 15 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 11 mars 2010 4
11 mars 2010 à 16:16
Bonjour,

N'étant pas sur que tu ais eu mon dernier post, pourrais tu regarder le bug que j'ai suite au prog que tu m'as envoyé stp ?

Merci d'avance

Marc
0