Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
989 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel] Importer ldif dans excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA Excel] Importer ldif dans excel

n°1908391
The_chosen​_one
There can only be one !
Posté le 24-07-2009 à 16:45:58  profilanswer
 

Bonjour,
 
Comme je trouvais pas sur le net, j'ai fait un petit script d'importation d'un ldif vers excel.
Je suis pas un pro du format ldif donc il se peut que j'ai pris quelques libertés dans la retranscription.
 
Commentaires constructifs bienvenus, mais pour l'instant ça à l'air de tourner correctement.
 

Code :
  1. Option Explicit
  2. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  3. ' ImportTextFile
  4. ' This imports a text file into Excel.
  5. ' From http://www.cpearson.com/excel/ImpText.aspx
  6. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  7. Public Sub ImportTextFile(FName As String)
  8. Dim RowNdx As Long
  9. Dim WholeLine As String
  10. Dim Pos As Integer
  11. Dim entete(255) As String
  12. Dim taille As Integer
  13. taille = 0
  14. Dim i As Integer
  15. Dim trouve As Integer
  16. Dim a, b As String
  17. RowNdx = 2
  18. Application.ScreenUpdating = False
  19. On Error GoTo EndMacro:
  20. Open FName For Input Access Read As #1
  21. While Not EOF(1)
  22.     Line Input #1, WholeLine
  23.     While Not WholeLine = ""
  24.         Line Input #1, WholeLine
  25.         If Left(WholeLine, 1) = " " Then
  26.             Cells(RowNdx, trouve).Value = Cells(RowNdx, trouve).Value & Right(WholeLine, Len(WholeLine) - 1)
  27.         Else
  28.             Pos = InStr(WholeLine, ":: " )
  29.             If Pos = 0 Then Pos = InStr(WholeLine, ": " )
  30.             If Not Pos = 0 Then
  31.                 a = Left(WholeLine, Pos - 1)
  32.                 b = Right(WholeLine, Len(WholeLine) - (Pos + 1))
  33.                 trouve = 0
  34.                 For i = 1 To taille
  35.                     If entete(i) = a Then trouve = i
  36.                 Next
  37.                 If trouve = 0 Then
  38.                     entete(taille + 1) = a
  39.                     trouve = taille + 1
  40.                     taille = taille + 1
  41.                     Cells(RowNdx, trouve).Value = b
  42.                     Cells(1, trouve).Value = a
  43.                 Else
  44.                     If Cells(RowNdx, trouve).Value = "" Then
  45.                         Cells(RowNdx, trouve).Value = b
  46.                     Else
  47.                         Cells(RowNdx, trouve).Value = Cells(RowNdx, trouve).Value & "|" & b
  48.                     End If
  49.                 End If
  50.             End If
  51.         End If
  52.     Wend
  53.     RowNdx = RowNdx + 1
  54. Wend
  55. EndMacro:
  56. On Error GoTo 0
  57. Application.ScreenUpdating = True
  58. Close #1
  59. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  60. ' END ImportTextFile
  61. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  62. End Sub
  63. Sub DoTheImport()
  64. ImportTextFile FName:="c:\ldif.txt"
  65. End Sub

Message cité 1 fois
Message édité par The_chosen_one le 24-07-2009 à 16:46:50
mood
Publicité
Posté le 24-07-2009 à 16:45:58  profilanswer
 

n°2046784
laederich
Vive linux
Posté le 06-01-2011 à 11:45:54  profilanswer
 

Ce script semble répondre exactement a mon besoin;
Coomment faire pour le mettre en oeuvre? (jer n'y connais rien en "script" )
Je suppose que je commence par copier ton text dans un document word?
dois-je changer l'extention en .exe?
dois je remplacer la ligne http://www.cpearson.....
par l'adresse de mon fichier .ldif que je souhaite importe dans Excell?
 
Merci d'avance pour ton aide!
 
Laederich@laposte.net
 

The_chosen_one a écrit :

Bonjour,
 
Comme je trouvais pas sur le net, j'ai fait un petit script d'importation d'un ldif vers excel.
Je suis pas un pro du format ldif donc il se peut que j'ai pris quelques libertés dans la retranscription.
 
Commentaires constructifs bienvenus, mais pour l'instant ça à l'air de tourner correctement.
 

Code :
  1. Option Explicit
  2. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  3. ' ImportTextFile
  4. ' This imports a text file into Excel.
  5. ' From    1. Option Explicit
  6.    2. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  7.    3. ' ImportTextFile
  8.    4. ' This imports a text file into Excel.
  9.    5. ' From http://www.cpearson.com/excel/ImpText.aspx
  10.    6. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  11.    7. Public Sub ImportTextFile(FName As String)
  12.    8.
  13.    9. Dim RowNdx As Long
  14.   10. Dim WholeLine As String
  15.   11. Dim Pos As Integer
  16.   12.
  17.   13. Dim entete(255) As String
  18.   14. Dim taille As Integer
  19.   15. taille = 0
  20.   16.
  21.   17. Dim i As Integer
  22.   18. Dim trouve As Integer
  23.   19. Dim a, b As String
  24.   20.
  25.   21. RowNdx = 2
  26.   22.
  27.   23. Application.ScreenUpdating = False
  28.   24. On Error GoTo EndMacro:
  29.   25.
  30.   26. Open FName For Input Access Read As #1
  31.   27.
  32.   28. While Not EOF(1)
  33.   29.     Line Input #1, WholeLine
  34.   30.     While Not WholeLine = ""
  35.   31.         Line Input #1, WholeLine
  36.   32.         If Left(WholeLine, 1) = " " Then
  37.   33.             Cells(RowNdx, trouve).Value = Cells(RowNdx, trouve).Value & Right(WholeLine, Len(WholeLine) - 1)
  38.   34.         Else
  39.   35.             Pos = InStr(WholeLine, ":: " )
  40.   36.             If Pos = 0 Then Pos = InStr(WholeLine, ": " )
  41.   37.             If Not Pos = 0 Then
  42.   38.                 a = Left(WholeLine, Pos - 1)
  43.   39.                 b = Right(WholeLine, Len(WholeLine) - (Pos + 1))
  44.   40.                 trouve = 0
  45.   41.                 For i = 1 To taille
  46.   42.                     If entete(i) = a Then trouve = i
  47.   43.                 Next
  48.   44.                 If trouve = 0 Then
  49.   45.                     entete(taille + 1) = a
  50.   46.                     trouve = taille + 1
  51.   47.                     taille = taille + 1
  52.   48.                     Cells(RowNdx, trouve).Value = b
  53.   49.                     Cells(1, trouve).Value = a
  54.   50.                 Else
  55.   51.                     If Cells(RowNdx, trouve).Value = "" Then
  56.   52.                         Cells(RowNdx, trouve).Value = b
  57.   53.                     Else
  58.   54.                         Cells(RowNdx, trouve).Value = Cells(RowNdx, trouve).Value & "|" & b
  59.   55.                     End If
  60.   56.                 End If
  61.   57.             End If
  62.   58.         End If
  63.   59.     Wend
  64.   60.     RowNdx = RowNdx + 1
  65.   61. Wend
  66.   62.
  67.   63. EndMacro:
  68.   64. On Error GoTo 0
  69.   65. Application.ScreenUpdating = True
  70.   66. Close #1
  71.   67. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  72.   68. ' END ImportTextFile
  73.   69. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  74.   70. End Sub
  75.   71.
  76.   72. Sub DoTheImport()
  77.   73. ImportTextFile FName:="c:\ldif.txt"
  78.   74. End Sub
  79. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  80. Public Sub ImportTextFile(FName As String)
  81. Dim RowNdx As Long
  82. Dim WholeLine As String
  83. Dim Pos As Integer
  84. Dim entete(255) As String
  85. Dim taille As Integer
  86. taille = 0
  87. Dim i As Integer
  88. Dim trouve As Integer
  89. Dim a, b As String
  90. RowNdx = 2
  91. Application.ScreenUpdating = False
  92. On Error GoTo EndMacro:
  93. Open FName For Input Access Read As #1
  94. While Not EOF(1)
  95.     Line Input #1, WholeLine
  96.     While Not WholeLine = ""
  97.         Line Input #1, WholeLine
  98.         If Left(WholeLine, 1) = " " Then
  99.             Cells(RowNdx, trouve).Value = Cells(RowNdx, trouve).Value & Right(WholeLine, Len(WholeLine) - 1)
  100.         Else
  101.             Pos = InStr(WholeLine, ":: " )
  102.             If Pos = 0 Then Pos = InStr(WholeLine, ": " )
  103.             If Not Pos = 0 Then
  104.                 a = Left(WholeLine, Pos - 1)
  105.                 b = Right(WholeLine, Len(WholeLine) - (Pos + 1))
  106.                 trouve = 0
  107.                 For i = 1 To taille
  108.                     If entete(i) = a Then trouve = i
  109.                 Next
  110.                 If trouve = 0 Then
  111.                     entete(taille + 1) = a
  112.                     trouve = taille + 1
  113.                     taille = taille + 1
  114.                     Cells(RowNdx, trouve).Value = b
  115.                     Cells(1, trouve).Value = a
  116.                 Else
  117.                     If Cells(RowNdx, trouve).Value = "" Then
  118.                         Cells(RowNdx, trouve).Value = b
  119.                     Else
  120.                         Cells(RowNdx, trouve).Value = Cells(RowNdx, trouve).Value & "|" & b
  121.                     End If
  122.                 End If
  123.             End If
  124.         End If
  125.     Wend
  126.     RowNdx = RowNdx + 1
  127. Wend
  128. EndMacro:
  129. On Error GoTo 0
  130. Application.ScreenUpdating = True
  131. Close #1
  132. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  133. ' END ImportTextFile
  134. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  135. End Sub
  136. Sub DoTheImport()
  137. ImportTextFile FName:="c:\ldif.txt"
  138. End Sub




---------------
laederich@laposte.net
n°2046848
olivthill
Posté le 06-01-2011 à 12:37:20  profilanswer
 

Non, il ne faut pas copier ce programme dans Word. Il faut copier ce programme dans un module VBA de Excel.
 
L'accès à un module VBA se fait de plusieurs manières.
Personnellement, je vais du côté du VBA par Alt F11, et je clique dans la fenêtre du projet sur "Modules", pour voir s'afficher l'éditeur de texte des macros pour un module. Ensuite faire un copier/coller.
 
Bref, c'est facile quand on a l'habitude, mais pas évident quand on débute.
Je vous conseillerais donc de vous initier au VBA d'Excel en premier lieu.
 
Bon courage !
 
N.B. Ce n'était pas la peine de citer le message précédent, et de réécrire les 147 lignes du programme dans votre question, puisque le programme est visible juste avant.

Message cité 2 fois
Message édité par olivthill le 06-01-2011 à 12:40:49
n°2046858
laederich
Vive linux
Posté le 06-01-2011 à 13:17:57  profilanswer
 

olivthill a écrit :

Non, il ne faut pas copier ce programme dans Word. Il faut copier ce programme dans un module VBA de Excel.
 
L'accès à un module VBA se fait de plusieurs manières.
Personnellement, je vais du côté du VBA par Alt F11, et je clique dans la fenêtre du projet sur "Modules", pour voir s'afficher l'éditeur de texte des macros pour un module. Ensuite faire un copier/coller.
 
Bref, c'est facile quand on a l'habitude, mais pas évident quand on débute.
Je vous conseillerais donc de vous initier au VBA d'Excel en premier lieu.
 
Bon courage !
 
N.B. Ce n'était pas la peine de citer le message précédent, et de réécrire les 147 lignes du programme dans votre question, puisque le programme est visible juste avant.


n°2046859
laederich
Vive linux
Posté le 06-01-2011 à 13:21:43  profilanswer
 

J'ai bien copie les 74 lignes de codes dans VBAProject/Modules/modul1
J'ai sauvegarde sous le nom book1.xlsm
Mais je n'arrive pas a faire tourner la macro?
J'ai essaye alt F5, mais il n'y a pas de macro presente..
 
 
 

olivthill a écrit :

Non, il ne faut pas copier ce programme dans Word. Il faut copier ce programme dans un module VBA de Excel.
 
L'accès à un module VBA se fait de plusieurs manières.
Personnellement, je vais du côté du VBA par Alt F11, et je clique dans la fenêtre du projet sur "Modules", pour voir s'afficher l'éditeur de texte des macros pour un module. Ensuite faire un copier/coller.
 
Bref, c'est facile quand on a l'habitude, mais pas évident quand on débute.
Je vous conseillerais donc de vous initier au VBA d'Excel en premier lieu.
 
Bon courage !
 
N.B. Ce n'était pas la peine de citer le message précédent, et de réécrire les 147 lignes du programme dans votre question, puisque le programme est visible juste avant.



Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel] Importer ldif dans excel

 

Sujets relatifs
[VBA-Outlook] Changer de compte en fonctions de critères[VBA] Problème redimensionnement et positionnement de graphique
[VBA Excel] garder la mise en forme dans une textbox [RESOLU][RESOLU] [VBS] copier uniquement les lignes filtrées sous Excel
Excel: boucle pour plusieurs commandbuttonproblème de filtre vba macro Excel
Extraire un formaulaire dans un tableau sur Excel[VBA] Erreur 1004 AutoFiltre method of Range class failed
Importer plusieurs csv sous access avec fichier .ini 
Plus de sujets relatifs à : [VBA Excel] Importer ldif dans excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR