LF pour les nuls
Messages postés19Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 2 juin 2006
-
11 mai 2006 à 14:22
Alboure
Messages postés42Date d'inscriptionvendredi 10 octobre 2003StatutMembreDernière intervention21 juin 2006
-
12 mai 2006 à 19:32
Bonjour, je suis tout nouveau ici et peu expérimenté en VBA. Or, je suis bloqué...
Je suis en train de faire une application Excel pour gérer des entrées et des sorties de personnel par code barre (chaque fois que quelqu"un entre, j'inscris le nom, le prénom, le numéro de badge, l'heure d'entrée, ... dans une feuille excel). Mais avant cela, je dois vérifier que la personne est inscrite dans les registres et y récupérer ces informations (une autre feuille excel).
J'ai donc le numéro de badge en entrée. Je souhaite l'utiliser pour récupérer les informations sur l'autre feuille excel grâce à une fonction Autorisation. Est-il possible que l'un des paramètres de cette fonction soit une feuille excel?
J'ai essayé ce code, mais j'ai une erreur 9...
Public appExcel As Excel.Application 'Application Excel
Public bookExcel As Excel.Workbook
Public listeAutoristations As Excel.Worksheet
Public Sub CommandButton1_Click()
'Chemin du fichier a modifier à chaque installation
repertoire = "C:\...\fichier.xls"
'Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
'Gestion du fichier et ouverture statique
Set bookExcel = appExcel.Workbooks.Open(repertoire)
Set ListeAutorisations = bookExcel.Worksheets(Sheet) 'ERREUR 9
'Visualisation en fond d'ecran la page excel
'appExcel.Visible = True
Autorisation(CLng(TextBox1.Value), (ListeAutorisations))
'On entre le matricule et on va chercher les données associées pour les récupérer dans une textbox
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 11 mai 2006 à 16:50
Non, pas besoin, c'est nécessaire depuis les autres appli Office ou VB.
A partir du classeur,
Workbooks.Open ("c:/chemin/nom classeur")
'ça t'ouvre le classeur est celui est actif.
celui ci étant ouvert et donc actif, tu peux travailler comme normalement
(range("A1").Value = sboub ; Printout ; bref tout quoi)
Par contre pour le fermer, ne fait pas ThisWorkBook.Close mais ActiveWorkBook.Close
Voilou
Pour te filer un exemple, j'ai un fichier qui calcul mon salaire, quand je l'ouvre, il ouvre mon planning pour récupérer mes heures effectuées, le ferme et place les données aux emplacements qui vont bien :
_________________________________________________________________________
Dim nbjourtrav, nbPrimeDispo, nbheurenuit, nbheurenuitsamedi, nbheurejourdimanche, nbheurenuitdimanche, nbheurejourferie As Byte
Private Sub Workbook_Open()
Workbooks.Open ("S:\PARTAGES\CI\Nico\Tour Nico CI 2006")
moisencours = Month(Date)
If moisencours = 2 Then
Workbooks("Tour Nico CI 2006.xls").Worksheets("janv").Select
Call nbheures
ElseIf moisencours = 1 Then
Workbooks("Tour Nico CI 2006.xls").Worksheets("déce").Select
Call nbheures
ElseIf moisencours = 3 Then
Workbooks("Tour Nico CI 2006.xls").Worksheets("févr").Select
Call nbheures
ElseIf moisencours = 4 Then
Workbooks("Tour Nico CI 2006.xls").Worksheets("mars").Select
Call nbheures
ElseIf moisencours = 5 Then
Workbooks("Tour Nico CI 2006.xls").Worksheets("avri").Select
Call nbheures
ElseIf moisencours = 6 Then
Workbooks("Tour Nico CI 2006.xls").Worksheets("mai").Select
Call nbheures
ElseIf moisencours = 7 Then
Workbooks("Tour Nico CI 2006.xls").Worksheets("juin").Select
Call nbheures
ElseIf moisencours = 8 Then
Workbooks("Tour Nico CI 2006.xls").Worksheets("juil").Select
Call nbheures
ElseIf moisencours = 9 Then
Workbooks("Tour Nico CI 2006.xls").Worksheets("août").Select
Call nbheures
ElseIf moisencours = 10 Then
Workbooks("Tour Nico CI 2006.xls").Worksheets("sept").Select
Call nbheures
ElseIf moisencours = 11 Then
Workbooks("Tour Nico CI 2006.xls").Worksheets("octo").Select
Call nbheures
ElseIf moisencours = 12 Then
Workbooks("Tour Nico CI 2006.xls").Worksheets("nove").Select
Call nbheures
End If
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 11 mai 2006 à 15:24
Salut,
Tu dis que tu es en VBA (je suppose Excel!).
Pourquoi déclares-tu
Public appExcel As Excel.Application 'Application Excel
Public bookExcel As Excel.Workbook
Public listeAutoristations As Excel.Worksheet
++
Mortalino
Vous n’avez pas trouvé la réponse que vous recherchez ?
LF pour les nuls
Messages postés19Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 2 juin 2006 11 mai 2006 à 15:32
Salut,
Parce que je travaille avec un fichier excel pour mon interface mais que j'ai besoin de faire appel à d'autres fichiers excel. Ne sachant pas comment faire, j'ai essayé un code trouvé sur le site. Il ne fallait pas?
LF pour les nuls
Messages postés19Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 2 juin 2006 11 mai 2006 à 18:06
Et bien, voilà qui est clair! Super sympa. Je crois mieux comprendre. En fait, il suffit d'activer le classeur et les feuilles sur lesquels on veut travailler. Et lorsqu'on souhaite revenir sur le classeur de l'application, on les désactive. Du coup, mon erreur 9 viendrait de l'oubli du select. J'essaye tout ça ce soir ou demain, mais en tout cas grand merci (je n'oublierais pas de valider la réponse après essai^^).
LF pour les nuls
Messages postés19Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 2 juin 2006 12 mai 2006 à 11:06
Super! ça marche! Excatement ce que je voulais. Je sens le pouvoir de VBA entrer en moi. Rien ne pourra m'arrêter. Je vais me mettre à programmer en dehors du boulot!!! lol. Prochaine étape, allumer mon pc pour qu'il me réveille en musique le matin^^
LF pour les nuls
Messages postés19Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 2 juin 2006 12 mai 2006 à 11:22
Par contre, tant que j'y suis... Je peux faire la même chose sans ouvrir le fichier excel? Car ça rame un peu à l'ouverture. Si je pouvais l'utiliser plus rapidement, ce serait génial.
Sinon, petite astuce pour ne pas trop solliciter les ressources d'Excel :
début de procédure : Application.ScreenUpdating = False
fin de procédure : Application.ScreenUpdating True
> c'est pour inhiber la mise à jour des données pendant le code