Se connecter avec
S'enregistrer | Connectez-vous

pitit conseil en vba

Dernière réponse : dans Programmation

voila la situation: je commence le vb sous excel et ai un peu de mal malgré le fait que j'ai déjà programmé en C.

J'ai déjà parcouru quelques sites et forum afin de me mettre dans le bain et ai essayé de faire 2 ou 3 petit programme pour m'y habituer.

mais le but de mon stage (c'est pour ca que je commence le vb), est de transférer les trames que m'envoi une machine par liaison série pour les traitées et organiser sous excel.
La question que je me pose c'est comment arriver à récupérer les données que m'envoi cette machine pour synchroniser mon programme avec elles.

je ne demande un programme tout frais tout beau mais juste si quelqu'un a cette expérience...
je joindrai une partie de mon programme un peu plus tard car je pense que j'aurai surement besoin d'un ou deux conseil en plus, si c'est pas trop demandé.

merci d'avance

Autres pages sur : pitit conseil vba

Lassé par la pub ? Créez un compte

j'attend depuis maintenant une semaine qu'on m'envoi le code des trames, la seule doc que j'ai à propos de ma machine est celle à destination des techniciens qui utilise la machine, mais pas ceux qui font le programme pour traiter les infos :pt1cable: 

Alors en attendant je tape la mise en page que je voudrai avoir en laissant des gros blancs pour la réorganisation des données.

mais est-ce que lorsque le pc recoit des données par port série, il les enregistre temporairement dans un fichier quelconque, qui serait alors facilement récupérable...?

(question annexe : fichier log, késako?)

Fichier log dans mon sens = fichier ou tu enregistre ton flux temps réel pour le traiter régulièrement si jamais le débit est trop élevé pour être traité en temps réel.

Si ca arrive sur le port série à la vitesse classique maxi de 115.2kbps alors c'est traitable temps réel par n'importe quelle machine moderne (disons un 486 dx2 66 :o )

Par contre de là à écrire dans excel au fur et à mesure je ne sais pas.
Dans une BDD 'classique' oui tres certainement, apres il faudrait tester le débit que tu peux obtenir au maxi sur ta machine.

Encore un problème:
j'ai un nombre de volontaire auwquels j'applique un nombre de produits, pour connaitre le nom de ces produits, je le demande a l'utilisateur lorsque je suis a mon premier volontaire.
Ensuite je n'ai plus qu'a recopier la sélection des cases correspondant a mes noms de produits à la ligne d'en dessous (je ne sais pas si je suis très clair...)
le seul problème c'est que le nombre de produits testé pouvant varier, je ne sais pas a quelle ligne m'arreter durant ma sélection.
Voila quelques lignes de mon code:
cel est ma variable attribuée a une cellule précise
  1. Do Until i > nbvol
  2.  
  3. Do Until compteur > nbprod
  4.  
  5. Do While cel.Offset(u) <> "" ==> me permet de savoir quand une case est vide
  6. u = u + 1
  7. Loop
  8.  
  9. If i = 1 Then
  10. prod = InputBox("entrez le nom du produit n°" & compteur)
  11. cel.Offset(u, 0) = prod
  12. End If
  13.  
  14. If i >= 2 Then
  15. Range("b1:b1.Offset(u,0)").Select ==> c'est ici que je bloque car pour lui le code n'est pas correct
  16. Selection.Copy
  17. cel.Offset(u, 0).Select
  18. ActiveSheet.Paste
  19. End If
  20.  
  21. compteur = compteur + 1
  22. Loop
  23.  
  24. i = i + 1
  25. compteur = 1
  26. Loop


si vous avez une astuce ou quoi que ce soit, n'hésitez pas :D , car j'ai essayé de bidouiller mon code dans tout les sens, y a toujours un truc qui cloche.

Bon bah j'ai trouvé mon erreur, pour ceux que ca intéresse, je m'était focalisé sur un copié-collé qui me semblait pratique mais qui en fait n'était pas idéal, rien ne vaut une bonne vieille distribution des valeurs une par une.
Voila la parie du code que j'ai changé pour ca:
  1. If i = 1 Then
  2. prod = InputBox("entrez le nom du produit n°" & compteur)
  3. cel.Offset(u, 0) = prod
  4. End If
  5.  
  6. Set cel2 = cel.Offset(u, 0)
  7.  
  8. If i >= 2 Then
  9. n = cel.Offset(u - nbprod, 0)
  10. cel2 = "" & n
  11. End If
  12.  
  13. compteur = compteur + 1
  14. Loop

un peu archaique mais efficace :bounce: 

Encore deux derniers petites questions.

comme tu l'as dit boubpopsyteam, on à créer un mini logiciel qui pemet de récupérer les données, puis lorsqu'on enregistre, nous créé directement un fichier excel avec ces données.

mais il me manque 2 codes que je n'arrive à trouver nul part.
-celui qui permet de connaitre la date et l'heure de la denière utilisation d'un fichier (ligne 2)
-celui qui permet charger un fichier (ligne 12)


  1. fichier = "C:\toto.xls"
  2. Date1 = 'date de la dernière utilisation de ce fichier'
  3. Do While fichier <> ""
  4.  
  5. 'date du dernier enregistrement'
  6. Date2 = FileDateTime(fichier)
  7.  
  8. If Date2 < Date1 Then
  9.  
  10. Feuil2.Activate
  11. Range("a1").Select
  12. 'chargement de toto.xls'
  13. GoTo traitement
  14.  
  15. End If
  16. Loop


si quelqu'un avait la bonté de combler ces vides, 'ce serai le plus beau jour de ma vie' :sarcastic: 
Lassé par la pub ? Créez un compte