VB Excel petite aide

Résolu/Fermé
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 - 13 janv. 2010 à 20:21
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 - 26 janv. 2010 à 09:54
Bonjour,

J'ai un petit soucis, je suis actuellement en stage chez GDF Suez en 1ère année DUT QLIO. Le technicien maintenance et le responsable du site m'ont demandé de réaliser deux programmes en VB. Ils y connaissent rien en programmation donc même si je débute en programmation VB j'essaie de me débrouiller d'apprendre petit à petit. J'ai des idées mais je n'arrive pas à écrire un programme correct.

Le premier programme

Le technicien maintenance du site a un problème, lorsqu'il doit changer de filtres et de courroies sur des centrales d'air, il faut qu'il se déplace pour voir quelles longueurs de filtres et de courroies il a besoin, puis qu'il aille les chercher dans les chaufferies. C'est une perte de temps inutile. Pour cela dans un premier temps j'ai crée un programme très simple qui en fonction du numéro de la CTA rentrée donne les longueurs de filtres et de courroies correspondantes:

PublicSub Filtres_et_courroies ( )

Dim CTA As Integer

CTA = inputbox ("Sur quelle Centrale de Traitement d'Air souhaitez vous intervenir ?")

If CTA = 1 then
MsgBox "Filtres : media en carton 180 * 50"
MsgBox "Courroies : Texrope VP2"
End If

If CTA = 2 etc...
...
End Sub

Bon ce premier programme est très simpliste mais il a l'avantage de marcher. ^^ Maintenant j'aimerai améliorer l'interface c'est-à-dire est-il possible d'avoir le message et la réponse dans le même bouton ? Le technicien n'entre pas seulement des chiffres pour les CTA mais aussi des noms: CTA 1 mais aussi CTA Auditorium, comment avoir un type qui fonctionne pour des chiffres mais aussi des caractères ?





Second programme:

Maintenant le technicien maintenance a besoin d'aller chercher ces filtres et ces courroies. J'ai crée sous Excel un fichier de gestion de stocks. J'aimerai que mon programme surligne la ligne ou les lignes correspondant à la référence rentrée par l'utilisateur. Par exemple, il rentre filca21050 pour un filtre en carton de 210*50 et le programme surligne la ligne correspondante dans la feuille excel qui indique notamment la quantité, le lieu.


Merci pour votre aide et je rappelle que je suis débutant j'ai commencé le VBA il y a 2 mois ^^"
A voir également:

41 réponses

tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
19 janv. 2010 à 11:35
Salut,
Public Sub recherche()

Dim ref As String

ref = InputBox("Quelle est la référence de l'élément que vous recherchez ?")

derlig = Range("B65536").End(xlUp).Row

For i = 5 To derlig Step 1

If Range("C" & i).Value = ref Then

Range("A" & i & ":K" & i).Interior.ColorIndex = 6

End If

Next i

End Sub 
0
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 2
19 janv. 2010 à 11:50
For i = 5 To derlig Step 1

If Range("C" & i).Value = ref Then

Range("C" & i & ":K" & i).Interior.ColorIndex = 6

End If

Next i


Excusez moi Tompols mais lorsque j'exécute mon programme et que je tape ma référence, il n'y a rien de surligner dans la feuille. Je ne comprends pas. J'ai mis la colonne C, colonne où se trouve mes références. Pourtant rien... T_T Et pour gérer la couleur, j'ai crée une documentation pour le technicien qui indique qu'il ne faut pas enregistrer le fichier quand il a trouvé ses filtres et ses courroies pour que la couleur ne revienne pas. Qu'en pensez vous ?
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
19 janv. 2010 à 11:57
Bonjour,
Comment est constitué le classeur de recherche ? la derniere ligne est retrouvée depuis la derniere cellule non vide en B et le code recherché est recherché dans la colonne C....
Premiere chose, modifier derlig = Range("B65536").End(xlUp).Row par derlig = Range("C65536").End(xlUp).Row
sinon un fichier exemple pourrait aider (à déposer ici si possible)...
EDIT : ce code s'applique à la feuille active par défaut, vérifier depuis quelle feuille l'utilisateur lance la procédure
0
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 2
19 janv. 2010 à 12:03
https://www.cjoint.com/?btmezYrMO7

Voilà ça marche en réalité à moitié. Pour les moteurs, les élements d'éclairage, ça marche niquel. Mais quand je tape la référence des filtres: 180505, ça surligne rien du tout...

Merci de votre aide Tompols. :)
0

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

Posez votre question
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
19 janv. 2010 à 12:09
re,
cf mon post précédent, modifier derlig = Range("B65536").End(xlUp).Row par derlig = Range("C65536").End(xlUp).Row
chez moi ça fonctionne après cette modif.....
0
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 2
19 janv. 2010 à 12:21
Oui c'est parfait ça marche très bien. Je n'avais pas fait attention à votre modification. Penez que je dois gérer le retour à la couleur normale ?
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
19 janv. 2010 à 12:58
Re,
Pour gérer le retour à la normale, une procédure sous l'événement BeforeSave du classeur peut faire l'affaire (à placer sans ThisWorkbook) :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
derlig = Sheets(1).Range("C65536").End(xlUp).Row

For i = 5 To derlig Step 1

    If Sheets(1).Range("C" & i).Interior.ColorIndex = 6 Then

        Sheets(1).Range("C" & i & ":K" & i).Interior.ColorIndex = xlNone
    End If
Next i
End Sub

0
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 2
19 janv. 2010 à 13:36
Très bien merci j'ai crée une 3ème procédure, pour gérer le retour à la couleur normale. Mon programme semble très bien fonctionner. Je sais qu'un programme mieux fait aurait été plus pratique pour le technicien mais bon j'apprendrai... Merci en tout cas Tompols sans vous je n'aurai pas terminé mon projet. =)
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
19 janv. 2010 à 13:49
De rien :)
"Je sais qu'un programme mieux fait aurait été plus pratique" => on peut toujours t'aider à améliorer tout ça, au vu de ta problématique et de ton fichier, on peut imaginer qqchose de tres simple mais je ne maitrise pas tout (pourquoi mettre une ligne en couleur ? on pourait tres bien afficher l'emplacement et le stock restant pour tes différents élément dans une msgbox -ceci dit l'emplacement est invariant, tout est au bat 3 sauf les éclairages qui sont au bat 1- sinon, as-t-on une base pour les CTA ou stocker les infos, ce serait bien mieux que de gérer ça ds le code -le code devrait contenir une logique mais pas de données -? etc....)
0
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 2
19 janv. 2010 à 15:54
Effectivement, l'idée du msgbox ets intéressante. Mais bon, je ne pense pas que le surlignage et la msgbox soient tous les duex superflus mais le msgbox est plus intéressant car il n'y a pas le retour à la couleur normale à gérer. Est ce que la simple ligne fonctionnerait à la fin?

MsgBox ref
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
19 janv. 2010 à 16:12
"Est ce que la simple ligne fonctionnerait à la fin?"
MsgBox ref

euh....moi jlançais des idées comme ça, savoir si ça suffira, c'est de ton coté que ça se passe....que cherches-tu à accomplir, quelle est la finalité, le 'livrable' ? ce que j'en comprends : le gars connait uniquement le nom du CTA sur lequel intervenir....il rentre le CTA, ça c'est OK mais que doit-on lui sortir ? les références des pièces ? l'emplacement de ces pièces ? le stock restant ? uniquement pour les filtres ? uniquement pour les courroies ? pour d'autres types de pièces ? pour toutes les pièces ? etc....
0
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 2
19 janv. 2010 à 21:24
Alors en fait le technicien maintenance du site exécute la première procédure pour savoir quelle(s) filtre(s) et quelle(s) courroie(s) il doit utiliser en fonction de la centrale de traitement d'air sur laquelle il souhaite intervenir.

Dans la deuxième procédure, il tape les références qu'il connaît et qui sont expliqués dans la doc. Pour un filtre par exemple, il suffit de rentrer les dimensions sans le signe * . La ligne est surlignée dans la feuille excel. Ainsi pour des néons Philips 36W, il a d'un coup d'oeil les 5 - 6 néons qui sont surlignés dans la feuille.

La troisième procédure il exécute seulement pour effacer la couleur jaune fluo. Voilà, le tout expliqué dans une doc que j'ai rédigé pour lui et ses collègues.

Donc l'idéal serait que quand il rentre la référence, il obtient la désignation, le lieu, la quantité ce qui est un gain non négligeable par rapport à ce qu'il m'a raconté...

Il était obligé d'aller sur un site à côté en voiture pour voir quel filtre il faut, revenir sur le site, chercher le filtre et la courroie, retourner les mettre...c'était un peu fastidieux, j'espère que ce programme va l'aider un peu ^^ . ..
0
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 2
20 janv. 2010 à 08:20
Bonjour,

Je me demandais s'il fallait un code spécial pour améliorer la présentation. Par exemple, souligner les termes filtres et courroies, mettre en italique les termes dimensions, et désignation. Je ne sais pas est ce que ces balises fonctionnent en VBA : ?
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
20 janv. 2010 à 09:45
Re,
Non il me semble pas que tu puisses faire ça pour une msgbox, il faudrait passer par un userform pour ça...
Par contre tu pourrais essayer de tout faire dans une seule procédure non ? genre le technicien de maintenance entre la CTA et ça mets automatiquement en jaune (ou autre) les pièces qu'il peut utiliser (on peut meme imaginer mettre à jour le stock pour les pièces qu'il aura choisi)....
0
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 2
20 janv. 2010 à 09:51
Oui je pensais tout mettre en une seule procédure, mais je me disais qu'il est possible que le technicien maintenance ait besoin seulement d'une seule procédure, il peut avoir besoin de la fonction recherche sans aller intervenir sur une CTA. Je pense que pour le moment je vais laisser mon programme comme ça. Est t il possible de créer un exécutable sur une clé USB pour que le programme s'ouvre automatiquement avec le fichier quand on clique sur le gestion_stock.exe par exempel ?
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
20 janv. 2010 à 09:55
Re,
non pas de 'compilation' en exe possible....Par contre tu peux placer ta procédure dans workbook_open pour qu'elle s'exécute à l'ouverture du classeur (comme pour le nettoyage qui s'exécute seul juste avant l'enregistrement)...
0
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 2
20 janv. 2010 à 11:04
Très bien je pense que je vais placer la procédure en workbook_open. Maintenant, je dois convertir mon fichier en PDF pour une meilleur impression afin que le technicien ait une trace papier de mon travail. Le problème c'est que lorsque je convertis en ligne, le résultat n'est pas vraiment ce que j'attendais... Avez vous une idée pour que l'impression se fasse correctement ?
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
20 janv. 2010 à 11:28
re,
que veux-tu convertir en pdf ? ta doc ? ton fichier de stocks ? Qd tu dis que ça ne s'imprime pas correctement, quel est le probleme ?
0
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 2
20 janv. 2010 à 12:10
Je veux convertir mon fichier de stock en PDF mais le fichier Word tel qu'il est. En fait quand je le convertis en PDF mon fichier de gestion tient sur 10 pages (!) En fait, au format PDF, après l'avoir converti, il est en "morceaux". je voulais savoir s'il était possible de convertir en PDF mon fichier de gestion de stocks .xls en .pdf pour l'imprimer sur 1 ou 2 pages. =)
0
Prince Mehdi Messages postés 34 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 10 mars 2011 2
20 janv. 2010 à 12:10
Je veux convertir mon fichier de stock en PDF mais le fichier Word tel qu'il est. En fait quand je le convertis en PDF mon fichier de gestion tient sur 10 pages (!) En fait, au format PDF, après l'avoir converti, il est en "morceaux". je voulais savoir s'il était possible de convertir en PDF mon fichier de gestion de stocks .xls en .pdf pour l'imprimer sur 1 ou 2 pages. =)
0