Comment récupérer les données d'une carte SD avec Excel ?

Comment récupérer les données d'une carte SD avec Excel ? - Logiciels - Windows & Software

Marsh Posté le 15-11-2011 à 09:47:11    

Bonjour,
 
Je cherche comment récupérer les données sur un fichier d'une carte SD avec Excel.  
Le fichier en question sera sur une carte SD au format CSV, et le nom pourra changer.  
Je pensais donc cliquer sur un bouton dans Excel qui ouvrirait une arborescence permettant ainsi de sélectionner le fichier sur le PC, mais je ne sais pas comment faire.
 
Merci d'avance

Reply

Marsh Posté le 15-11-2011 à 09:47:11   

Reply

Marsh Posté le 15-11-2011 à 10:41:46    

Le plus simple : demarrer l'enregistrement d'une macro.
fait la procédure d'ouverture de fichier.
arrête l'enregistrement de la macro, et regarde le code que cela a généré
 
sinon, un simple : "open file VBA" sous google devrait pouvoir te donner des centaine d'exemple.


---------------
#mais-chut
Reply

Marsh Posté le 15-11-2011 à 11:10:23    

J'ai trouvé comment ouvrir une arborescence et ouvrir un dossier sélectionner avec les lignes du site suivant :
http://frederic.sigonneau.free.fr/ [...] OrFile.txt
 
Le souci maintenant est de récupérer les données du fichier (qui seront au format CSV) et de les ranger dans un tableau

Reply

Marsh Posté le 15-11-2011 à 13:37:16    

J'ai les lignes de code pour lire mon fichier

Code :
  1. Sub Import()
  2. Dim wb As Workbook
  3.   With Application
  4.     .ScreenUpdating = False
  5.     .DisplayAlerts = False
  6.     Set wb = .Workbooks.Open("C:\Documents and Settings\Administrateur.TIPI\Bureau\Carte SD\essaiCSVtext.txt" )
  7.     wb.Sheets(1).Columns(1).TextToColumns Range("A1" ), , , False, , True
  8.     .ScreenUpdating = True
  9.     .DisplayAlerts = True
  10.   End With
  11.  
  12. End Sub


Le souci est que cela m'ouvre un tableau dans un autre classeur.
Quelle fonction utiliser pour ouvrir le tableau dans une autre feuille (existante ou non) ?

Reply

Marsh Posté le 16-11-2011 à 15:38:58    

Salut,
 
Juste pour expliquer rapidement le code.
 
Cette ligne déclare un nouveau classeur:

Code :
  1. Dim wb As Workbook


 
Cette ligne ouvre le fichier passé en paramètre et l'assigne au nouveau classeur :

Code :
  1. Set wb = .Workbooks.Open(...)


 
Si tu regardes la structure de l'objet tu vois que Workbook (classeur) possède des Sheets (feuilles) qui lui contient des lignes et colonnes.
 
En clair il faut que tu transforme ta procédure Sub Import() pour soit en faire une fonction Function Import(currentWb As Workbook) qui prend en paramètre l'objet Workbook courant, soit dans ta procédure tu récupères simplement l'objet Workbook courant et tu lui ajoute une feuille dans laquelle tu placeras les données.
 
Pour le détail il faudrait que tu te réfères à la documentation disponible sur MSDN : http://lmgtfy.com/?q=excel+vba+msdn


Message édité par Requin le 16-11-2011 à 15:40:14
Reply

Marsh Posté le 16-11-2011 à 15:49:21    

Merci,
je vais voir tout ça

Reply

Marsh Posté le 17-11-2011 à 11:10:23    

J'ai trouvé une solution en changeant totalement de base

Reply

Marsh Posté le 17-11-2011 à 23:56:37    

En général c'est une bonne idée de mettre ta solution. Si qqn cherche à faire la même chose il pourra voir comment tu t'y es pris ;)

Reply

Marsh Posté le 18-11-2011 à 10:36:14    

Oui pardon...
J'étais pris dans l'évolution de mon code.
Voilà ma solution

Code :
  1. Sub Transfer_Enregistrements_vers_Excel()
  2. Dim TheTemporaryArray 'défini un tableau unidmensionel pour la capture des lignes du fichier texte
  3. Dim TheFinalArray() As Variant 'défini un tableau bidmensionel pour l'enregistrement informatique du fichier texte
  4. Dim FileName As Variant 'defini une variable qui contiendra le nom du fichier texte a ouvrir
  5. Dim strRec As String 'defini une variable qui contiendra une ligne du fichier texte
  6. Dim j As Long 'defini une variable qui sera utilisée dans un "compteur" de données
  7. Dim i As Long 'defini une variable qui sera utilisée dans un "compteur" de données
  8. Dim m As Long 'defini une variable qui sera utilisée dans un "compteur" de données
  9. Dim k As Long 'defini une variable qui sera utilisée dans un "compteur" de données
  10. Dim xx As Long 'Defini une variable qui contiendra la limite haute du tableau bidimensionel
  11. FileName = Application.GetOpenFilename("Text Files (*.txt),*.txt", , "Select Text Data File" ) 'Ouvre une fentre de selection de fichier qui permet a l'utilisateur de selectionner le fichier a importer. exclusivement des fichiers texte
  12. If FileName = False Then 'Si l'utilisateur n'a pas sélectionner de fichier
  13.     Exit Sub 'alors fin de la procedure
  14. ElseIf FileName <> False Then 'Si l'utilisateur à sélectionner un fichier
  15.    
  16.     Open FileName For Input As #1 'Ouvre le fichier texte
  17.     Line Input #1, strRec 'Lit une ligne du fichier et enregistre la ligne
  18.     TheTemporaryArray = Split(strRec, Chr(9)) 'Enregistre chaque element de la ligne séparé par un "tab" dans un tableau unidimensionel appellé TheTemporaryArray
  19.     ReDim TheFinalArray(UBound(TheTemporaryArray), LBound(TheTemporaryArray)) 'Précise la dimension du tableau.
  20.     xx = UBound(TheFinalArray) 'enregistre dans une variable la limite haute du tableau - normalement le nombre de "colonnes" du fichier texte  moins 1 car le tableau commence a zero et non pas 1
  21.     Close #1 'ferme le fichier texte. Cela est necessaire pour une future redimension du tableau TheFinalArray
  22.    
  23.     i = 1 'donne la valeur 1 a une variable qui servira dans la definition d'un tableau bidimensionel
  24.    
  25.     Open FileName For Input As #1 'Réouvre le fichier texte
  26.    
  27.     '****** l'étape suivante va etre repetée pour chaque ligne du fichier grace à la commande "Do While...Loop"  *****
  28.    
  29.     Do While Not EOF(1) 'Faire quelque chose jusqu'à temps que l'on arrive à la fin du fichier texte
  30.     Line Input #1, strRec 'Lit une ligne du fichier et enregistre la ligne
  31.     TheTemporaryArray = Split(strRec, vbTab) 'Enregistre chaque element de la ligne séparé par un "tab" dans un tableau unidimensionel appellé TheTemporaryArray
  32.    
  33.     For j = LBound(TheTemporaryArray) To UBound(TheTemporaryArray) 'Pour chaque élément du tableau unidimensionel
  34.    
  35.         TheFinalArray(j, i - 1) = TheTemporaryArray(j) 'l'élément du tableau unidimensionel est entré dans un tableau bidimensionel
  36.        
  37.     Next j 'tourne jusqu'à temps qu'il n'y ai plus d'elements dans le tableau unidimensionel
  38.    
  39.     ReDim Preserve TheFinalArray(xx, i) 'Redimensionne le tableau bidimensionel en y ajoutant une "ligne"
  40.     i = i + 1 'augmemte la variable comptable qui aide a la redimension du tableau bidimensionel
  41.    
  42.     Loop 'repete les etapes precedente pour chaque "ligne" du ficher texte
  43.    
  44.     Close #1 'Ferme le fichier texte
  45.    
  46.     '**** L'etape suivante transfer les données dans EXCEL ****
  47.     'Jusqu'ici toutes les données ont été transférées dans un tableau multidimensionel et non pas diretement dans Excel
  48.    
  49.     Sheets("Import de données" ).Activate 'sélectionne l'onglet où les données seront transcrites
  50.     Cells.Select 'selectionne toutes les cellule de l'onglet
  51.     Selection.ClearContents 'efface le contenu des cellules seletionnées
  52.     Cells(1, 1).Select 'retire la selection de toutes les cellules
  53.    
  54.     For k = 0 To xx 'Pour chaque "colonne" du tableau bidimensionel faire....
  55.    
  56.         For m = 0 To (i - 1) 'Pour chaque "ligne" du tableau bidimentionel faire...
  57.            
  58.             Cells(m + 1, k + 1) = TheFinalArray(k, m) 'un transfer de l'element du tableau bidimensionel vers Excel
  59.                                  
  60.         Next m 'repeter pour chaque "ligne" du tableau bidimensionel
  61.    
  62.     Next k 'repeter pour chaque "colonne" du tableau bidimensionel
  63.    
  64.     Sheets("Menu" ).Activate 'reselectionne l'onglet avec le bouton
  65. End If 'ferme la condition d'execution de la procedure liée à la trouvaille du nom de fichier

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed