apache88
Messages postés78Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 mars 2014
-
23 juil. 2007 à 11:11
apache88
Messages postés78Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 mars 2014
-
23 juil. 2007 à 15:35
Bonjour,
J'aurais besoin, pour un programme, de pouvoir écrire des données sur excel via VB. Pour l'instant j'ai ce bout de code:
Private
Sub excel()
Dim excel
As
New Excel.Application
Dim workbook
As Excel.Workbook
Dim worksheet
As Excel.Worksheet
Dim r
As Excel.Range
Dim firstcell
As Excel.Range
Dim lastcell
As Excel.Range
Dim rngg
As
String(,)
excel.Visible = True
'la fenêtre excel est visible
workbook = excel.Workbooks.Add(1)
'on ouvre un classeur dans excel
worksheet = workbook.Worksheets(1)
'on ouvre une feuille dans le classeur excel
WriteToExcel(worksheet, 1, 1,
"Acquisition temps réel")
'on écrit "acquisition temps réel" à l'intersection de la ligne 1 et la colonne 1
WriteToExcel(worksheet, 2, 1,
"Visualiser graphique appuyer sur ctrl+W")
Dim rng
As
String(,)
ReDim rng(5, 5)
rng(0, 0) =
"Date et heure"
'on choisit l'intersection de la ligne 0 et de la colonne 0 pour écrire "date et heure"
rng(0, 3) =
"Puissance kW"
'on choisit l'intersection de la ligne 0 et de la colonne 3 pour écrire "puissance W"
rng(0, 4) =
"Tension V"
'on choisit l'intersection de la ligne 0 et de la colonne 4 pour écrire "tension V"
rng(0, 5) =
"Courant A"
'on choisit l'intersection de la ligne 0 et de la colonne 5 pour écrire "courant A"
WriteToExcel(worksheet, 3, 1, rng)
'on écrit dans la feuille les expressions vu au-dessus en initialisant le curseur à la ligne 3 et la colonne 1
End
Sub
J'ai vu sur internet que quelqu'un utilisait WriteToExcel mais chez moi cela ne fonctionne pas... Auriez-vous une explication à ce problème? ou qu'est-ce que vous utiliseriez pour ecrire dans un fichier excel?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 23 juil. 2007 à 14:20
Salut,
Pour le premier problème essaie
Dim Li As Long
Li = 1
For Each result As SearchResult In searcher.FindAll
' On récupère l'entrée trouvée lors de la recherche
DirEntry = result.GetDirectoryEntry
Dim a = DirEntry.Properties( "SAMAccountName" ).Value
Dim b = DirEntry.Properties( "sn" ).Value
Dim c = "Tél : " + DirEntry.Properties( "TelephoneNumber" ).Value
ws.Range("A" & Li).Value = a
ws.Range("A" & (Li + 1)).Value = b
ws.Range("A" & (Li + 2)).Value = c
Li = Li + 4
Next, ----
[code.aspx?ID=41455 By Renfield]
En revanche pour le second je n'ai pas trop compris ton problème
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 23 juil. 2007 à 11:20
Salut,
je ne connais pas cette fonction
Mais en revanche
on écrit "acquisition temps réel" à l'intersection de la ligne 1 et la colonne 1
Ceci revient à écrire dans la cellule A1 donc
PS: change les nom de tes objets car Worksheet et WorkBook sont déjà des nom utilisés et cela peu être source de problème
Dim Wb
As Excel.WorkBook
Dim Ws
As Excel.Worksheet
Ws = Wb.WorkSheets(1)
Wb.Range("A1").Value = "Acquisition en Temps Réel"
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 23 juil. 2007 à 11:23
Salut,
Sinon en cherchant sur le net tu aurais trouvé cette fameuse procédure WriteToExcel. ecrite en .NET
Sub WriteToExcel(ByVal sheet As
Microsoft.Office.Interop.Excel.Worksheet, ByVal rownum As Integer, ByVal
colnum As Integer, ByVal text As String)
'writes text to a single cell
Dim r As Microsoft.Office.Interop.Excel.Range
r = sheet.Cells(rownum, colnum)
r.Formula = text
End Sub , ----
(Coloration syntaxique automatique par Kenji)
apache88
Messages postés78Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 mars 2014 23 juil. 2007 à 12:04
Oui mais pour l'instant mon problème principale n'est pas encore règler je suis actuellement en train d'adapter avec mon code. je test et je te donnerais des nouvelles.
apache88
Messages postés78Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 mars 2014 23 juil. 2007 à 14:15
J'ai une autre question, voici mon code maintenant:
Sub
Main()
Dim
User = InputBox(
"Veuillez entrer le nom d'utilisateur"
)
Dim
Password = InputBox(
"Veuillez entrer le mot de passe du compte "
+ User)
Dim
Ldap
As
DirectoryEntry =
New
DirectoryEntry(
[ldap://serveur LDAP://serveur]
, User, Password)
Dim
searcher
As
DirectorySearcher =
New
DirectorySearcher(Ldap)
Dim
DirEntry
As
DirectoryEntry
Dim
excel
As
New
Excel.Application
Dim
wb
As
Excel.Workbook
Dim
ws
As
Excel.Worksheet
searcher.Filter =
"(objectClass=user)"
excel.Visible =
True
'la fenêtre excel est visible
wb = excel.Workbooks.Add(1)
'on ouvre un classeur dans excel
ws = wb.Worksheets(1)
'on ouvre une feuille dans le classeur excel
For
Each
result
As
SearchResult
In
searcher.FindAll
' On récupère l'entrée trouvée lors de la recherche
DirEntry = result.GetDirectoryEntry
Dim
a = DirEntry.Properties(
"SAMAccountName"
).Value
Dim
b = DirEntry.Properties(
"sn"
).Value
Dim
c =
"Tél : "
+ DirEntry.Properties(
"TelephoneNumber"
).Value
ws.Range(
"A1"
).Value = a
ws.Range(
"A2"
).Value = b
ws.Range(
"A3"
).Value = c
Next
wb.SaveAs(
"C:\Documents and Settings\tanner\Desktop\liste_contact.xls"
)
End
Sub
En fait mon programme scan active directory afin de relver les nom et numéros de téléphone et ainsi pouvoir créer une liste sur excel. J'ai en faite 2 problèmes...
Le premier:
Comment lui dire d'afficher les contacts de cette manière
Nom1
Tel1
Nom2
Tel2
etc...
Pour l'instant a chaque contact, il réécrit par dessus l'existant....
2ème problème.
J'enregistre ensuite le fichier excel sur le bureau mais quand je veux l'ouvrir, ça n'affiche rien... y a la fenêtre excel mais ça bug! ça affiche mon bureau au lieu du contenu... je sais pas si c'est clair.
Au lieu de voir les contacts, je vois mon bureau... comme s'il avait fait une print screen de mon bureau et l'avais mis a la place.... quand j'imprime ça joue mais il me faudrait quand meme pouvoir le lire sans imprimer....
Au lieu de voir les contacts, je vois mon bureau... comme s'il avait fait une print screen de mon bureau et l'avais mis a la place.... quand j'imprime ça joue mais il me faudrait quand meme pouvoir le lire sans imprimer....
apache88
Messages postés78Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 mars 2014 23 juil. 2007 à 15:19
si tu peux pas m'aider pour le deuxième problème c'est pas grave. Mais j'en ai un autre qui peut être tu pourras m'aider. Dans mon active directory, il y a l'arborescence suivante:
Users
OU1 (Unité d'organisation quoi)
OU2
OU3
Et il me faudrait qu'il prenne uniquement les users de l'OU1. Actuellement il prend scan l'ou Users donc il relève les users de tous les OU... Je n'ai malheureusement pas trouvé sur internet mais peut etre que si tu sais comment faire.
apache88
Messages postés78Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 mars 2014 23 juil. 2007 à 15:35
Arf la mise en page fait que c'est assez dur à comprendre... en faite tu as l'OU Users ou tu mets tes utilisateurs mais tu peux créer d'autres OU DANS cette fameuse OU Users et j'aimerais pouvoir scanner uniquement une seule OU de l'OU Users.... Chaud à comprendre mais je fais de mon mieux