Est ce que quelqu'un pourra corriger mon code pour qu'il fonctionne...

Signaler
Messages postés
8
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 septembre 2002
-
Messages postés
194
Date d'inscription
dimanche 3 mars 2002
Statut
Membre
Dernière intervention
19 décembre 2005
-
cyrius
bonjour tout le monde,je debute en prog la je suis desesperé.Je dois transferer des données de mon formulaire access sur une page ecxel bien precise.Ceci dois se faire automatiquement quand je clique sur un bouton du formulaire.
voila mon code source,si quelqu'un peut m'aider SOS...SOS merci

Private Sub ajout_fiche_outil_Click()

'Déclaration des variables
Dim x As Excel.Workbook

'Appel du fichier modelprep vierge
Set x = GetObject("C:\Mes documents\modelprep_GP.xls")
x.Application.Windows("modelprep_GP.xls").Visible = True
x.Activate

'Intégration des données dans la fichoutil

Dim i As Integer
i = 8
If x.Application.Line(i) Is Null Then Do
x.Application.Sheets("Outils").Cells(i, 1).Value = N°charg1.Value
x.Application.Sheets("Outils").Cells(i, 1).Value = cod1.Value
x.Application.Sheets("Outils").Cells(i, 1).Value = typ1.Value & " - " & Fournisseur1.Value & " (Ref. " & Ref1.Value & ")"
x.Application.Sheets("Outils").Cells(i, 1).Value = "Ø " & Diametre.Value
x.Application.Sheets("Outils").Cells(i, 1).Value = "R " & Rayon.Value
x.Application.Sheets("Outils").Cells(i, 1).Value = lc1.Value & " mm"
x.Application.Sheets("Outils").Cells(i, 1).Value = lu1.Value & " mm"
x.Application.Sheets("Outils").Cells(i, 1).Value = dent1.Value
x.Application.Sheets("Outils").Cells(i, 1).Value = " "
x.Application.Sheets("Outils").Cells(i, 1).Value = Fix1.Value & " - " & Attach1.Value
Else
i = i + 2
Loop
End If

'Enregistrement de la fichoutil remplie
x.SaveAs "C:\Mes documents\TADAM.xls"

Set x = Nothing 'Annulation de l'affectation de la variable

End Sub

3 réponses

Messages postés
194
Date d'inscription
dimanche 3 mars 2002
Statut
Membre
Dernière intervention
19 décembre 2005
3
Toc Toc ....

c'est sympa ta question mais il ne fais pas quoi ton prog ???

il plante rien ne se passe ???

enfin j'ais toutefois une petite ID ...

je ne suis pas callee en VBA mais tu fait :

x.Application.Sheets("Outils").Cells(i, 1).Value = N°charg1.Value
x.Application.Sheets("Outils").Cells(i, 1).Value = cod1.Value
x.Application.Sheets("Outils").Cells(i, 1).Value = typ1.Value & " - " & Fournisseur1.Value & " (Ref. " & Ref1.Value & ")"

.....

et a chaque fois en fait tu reecrit la nouvelle valeur dans :
x.Application.Sheets("Outils").Cells(i, 1).Value

il me semble anormal que tu pointe toujours la meme cellule !

je ne me souvien plus commant reajie la fonction cells(x,y) mais a mon avis tu devrais essayer ceci:

x.Application.Sheets("Outils").Cells(i, 1).Value = N°charg1.Value
x.Application.Sheets("Outils").Cells(i, 2).Value = cod1.Value
x.Application.Sheets("Outils").Cells(i, 3).Value = typ1.Value & " - " & Fournisseur1.Value & " (Ref. " & Ref1.Value & ")"
x.Application.Sheets("Outils").Cells(i, 4).Value = "Ø " & Diametre.Value
x.Application.Sheets("Outils").Cells(i, 5).Value = "R " & Rayon.Value
x.Application.Sheets("Outils").Cells(i, 6).Value = lc1.Value & " mm"
x.Application.Sheets("Outils").Cells(i, 7).Value = lu1.Value & " mm"
x.Application.Sheets("Outils").Cells(i, 8).Value = dent1.Value
x.Application.Sheets("Outils").Cells(i, 9).Value = " "
x.Application.Sheets("Outils").Cells(i, 10).Value = Fix1.Value & " - " & Attach1.Value

la modification porte sur l'indication de la cellule pointee,

je ne me souvien plus dans quelle sens ca marche mais normalemant tu devrais avoire tes donnee en colones (ou en ligne ;-)

By TFlorian.
0
Messages postés
8
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 septembre 2002

salut TFolorian

en fait le probleme vient de ma boucle et de ma condition if ,et vu que ca plante en effet les données ne sont pas ecrites sur ma fiche ecxel.les données s'ecrive en ligne,J'arrive a faire afficher 1 ligne entiere mais je voudrais pouvoir en écrire plusieurs c'est pour cela que je faisait une boucle,et c'est cette .... de boucle qui met le brin dans mon programme.J'ai essayer d' affiner un peu ,ca me parait plus correct mais maintenant j'ai le message "un controle activeX ne peut pas creer d'objet":

Private Sub ajout_fiche_outil_Click()

'Déclaration des variables
Dim x As Excel.Workbook

'Appel du modelprep vierge
Set x = GetObject("C:\Mes documents\modelprep_GP.xls")
x.Application.Windows("modelprep_GP.xls").Visible = True
x.application.activate

'Intégration des données dans la fichoutil
Dim i As Integer
i = 8

If x.Application.Sheets("Outils").Cells(i, 2).Value <> Null Then
i = i + 2
x.Application.Sheets("Outils").Cells(i, 1).Value = N°charg1.Value
x.Application.Sheets("Outils").Cells(i, 2).Value = cod1.Value
x.Application.Sheets("Outils").Cells(i, 3).Value = typ1.Value & " - " & Fournisseur1.Value & " (Ref. " & Ref1.Value & ")"
x.Application.Sheets("Outils").Cells(i, 6).Value = "Ø " & Diametre.Value
x.Application.Sheets("Outils").Cells(i, 7).Value = "R " & Rayon.Value
x.Application.Sheets("Outils").Cells(i, 8).Value = lc1.Value & " mm"
x.Application.Sheets("Outils").Cells(i, 9).Value = lu1.Value & " mm"
x.Application.Sheets("Outils").Cells(i, 10).Value = dent1.Value
x.Application.Sheets("Outils").Cells(i, 11).Value = " "
x.Application.Sheets("Outils").Cells(i, 12).Value = Fix1.Value & " - " & Attach1.Value
Else
x.Application.Sheets("Outils").Cells(i, 1).Value = N°charg1.Value
x.Application.Sheets("Outils").Cells(i, 2).Value = cod1.Value
x.Application.Sheets("Outils").Cells(i, 3).Value = typ1.Value & " - " & Fournisseur1.Value & " (Ref. " & Ref1.Value & ")"
x.Application.Sheets("Outils").Cells(i, 6).Value = "Ø " & Diametre.Value
x.Application.Sheets("Outils").Cells(i, 7).Value = "R " & Rayon.Value
x.Application.Sheets("Outils").Cells(i, 8).Value = lc1.Value & " mm"
x.Application.Sheets("Outils").Cells(i, 9).Value = lu1.Value & " mm"
x.Application.Sheets("Outils").Cells(i, 10).Value = dent1.Value
x.Application.Sheets("Outils").Cells(i, 11).Value = " "
x.Application.Sheets("Outils").Cells(i, 12).Value = Fix1.Value & " - " & Attach1.Value

End If

'Enregistrement de la fichoutil remplie
x.SaveAs "C:\Mes documents\TADAM.xls"

Set x = Nothing 'Annulation de l'affectation de la variable

End Sub

j'esper que tu pourras m'aider,c'était deje sympa de me repondre
0
Messages postés
194
Date d'inscription
dimanche 3 mars 2002
Statut
Membre
Dernière intervention
19 décembre 2005
3
Bonjour,

je ne comprand pas bien ce que realise ton programme mais surtout je ne comprand pas commant il est sencee fonctionnee....

enfin voila ce qu'il me semble que tu realise...

- tu initialise i a 8 : ca correspon a une ligen ou a une collone je ne sais toujours pas mais peut importe ....

- ensuite tu test si la celule de coordonnee 8,2 n'est pas vide,

- Si il y a qq chose , tu change la valeur de i : i=i+2
-> donc tu incremante la ligne (/collone) pointee de 2 soit i=10
-> tu transfert les infos repartie sur la ligne complette (de 1 a 12)

- autremant tu ne fais pas le decalage de 2
-> tu pointe donc toujours avec i=8
-> tu transfert LES MEME donnee.

- tu sauve et fini !

!!-- Or --!!

tu parle de boucle mais pour cela tu n'a aucun renvois dans ton programme, le bloc if est donc executee UN seul fois !!!

Solution :

a)
Ton systeme a un nobre de ligne fixe / tu connais la longeure:
utilise l'instuction FOR-NEXT
Syntaxe:

For i=8 to 28
Instuction est realisee 20 fois
La valeure de i s'incremente et peut servire de pointeur ...
next i

(REM : consulte l'aide sur FOR - next en appuillant sur F apres l'avoir tapee sous VBA)

b)
tu peut conservee l'idee de ton appreoche en utilisant des marqeurs (pas sur que ca s'appele comme ca mais bon)

voici ton code repris avec tes ID ...

'------------------------------------

Private Sub ajout_fiche_outil_Click()

'Déclaration des variables
Dim x As Excel.Workbook

'Appel du modelprep vierge
Set x = GetObject("C:\Mes documents\modelprep_GP.xls")
x.Application.Windows("modelprep_GP.xls").Visible = True
x.application.activate

'Intégration des données dans la fichoutil
Dim i As Integer
i = 8

Ligne_Suivante

If x.Application.Sheets("Outils").Cells(i, 2).Value <> Null Then
'si la celule est plaine ecrit les donnee!

x.Application.Sheets("Outils").Cells(i, 1).Value = N°charg1.Value
x.Application.Sheets("Outils").Cells(i, 2).Value = cod1.Value
x.Application.Sheets("Outils").Cells(i, 3).Value = typ1.Value & " - " & Fournisseur1.Value & " (Ref. " & Ref1.Value & ")"
x.Application.Sheets("Outils").Cells(i, 6).Value = "Ø " & Diametre.Value
x.Application.Sheets("Outils").Cells(i, 7).Value = "R " & Rayon.Value
x.Application.Sheets("Outils").Cells(i, 8).Value = lc1.Value & " mm"
x.Application.Sheets("Outils").Cells(i, 9).Value = lu1.Value & " mm"
x.Application.Sheets("Outils").Cells(i, 10).Value = dent1.Value
x.Application.Sheets("Outils").Cells(i, 11).Value = " "
x.Application.Sheets("Outils").Cells(i, 12).Value = Fix1.Value & " - " & Attach1.Value

'passe a la ligne suivante
i=i+1

'realise une boucle inconditionnelle
goto Ligne_Suivante

Else
'si la celule est vide ne fais rien!
End If

'Enregistrement de la fichoutil remplie
x.SaveAs "C:\Mes documents\TADAM.xls"

Set x = Nothing 'Annulation de l'affectation de la variable

End Sub

'------------------------------------

bon sur le principe ca devrais fonctionnee mais le problemme est que tu te trouve dans une boucle qui est infinie car :
x.Application.Sheets("Outils").Cells(i, 2).Value
est forcement vide sur une page vierge,
ensuite tel qu'est structuree ton programme je ne vois pas ce qui differt entre la 1er ligne que tu ecrit et les autre du fait que les variables que tu utilises ne sont pas liees a i !!!

bien entendu si tu realise un masque de saisie externe a partire du quelle tu recupere "N°charg1.Value" ... le programme doit etre differant :

tu doit fair ta declaration de i en externe, tu incrementera ensuite i de facon a te decaller dans ton tableau ...

...

ca fait deja un beau poste ...

dis moi si ca fonctionne , si tu n'a rien compris ou si tu veux d'autres info n'esite surtout pas !

TFlorian.
0