Est ce que quelqu'un pourra corriger mon code pour qu'il fonctionne...
cs_cyrius
Messages postés8Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 septembre 2002
-
28 août 2002 à 11:07
TFlorian
Messages postés194Date d'inscriptiondimanche 3 mars 2002StatutMembreDernière intervention19 décembre 2005
-
30 août 2002 à 23:16
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
A voir également:
Est ce que quelqu'un pourra corriger mon code pour qu'il fonctionne...
cs_cyrius
Messages postés8Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 septembre 2002 29 août 2002 à 13:55
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
TFlorian
Messages postés194Date d'inscriptiondimanche 3 mars 2002StatutMembreDernière intervention19 décembre 20053 30 août 2002 à 23:16
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!
'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 !