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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Transfert de données d'une feuille excel vers un tableau VBA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Transfert de données d'une feuille excel vers un tableau VBA

n°1977745
spolnix
Posté le 26-03-2010 à 12:48:11  profilanswer
 

Hello,
 
Voila ca fait deux jours que je me galère la dessus donc je viens demander un petit coup de main.
Je dois synthétiser les informations provenant d'un extract de données d'un site SharePoint, j'obtiens donc une feuille avec différents champs de données.
Mon problème est que je n'arrive pas à créer un tableau en vba qui permet de stocker la velur de chaque cellule dans un champs tu tableau.
Je ne connais pas non plus le nombre de ligne que va m'importer mon tableau excel.
 
Je préfère vous le dire la programmation c'est pas vraiment mon fort mais j'ai reussi à pondre un code qui ne fonctionne pas ^^
 

Code :
  1. Dim statut() As String
  2. Dim i As Integer, j As Integer
  3.    
  4.         'Parcours de la colonne "Statut"
  5.         For i = 2 To i = Worksheets("Import SPS Altran" ).Cells(2, i) = Null
  6.         statut(i) = Worksheets("Import SPS Altran" ).Cells(2, i).value
  7.         Next i


 
Merci de votre aide ;)


---------------
L’impossible est déjà fait, pour les miracles prévoir un délai.
mood
Publicité
Posté le 26-03-2010 à 12:48:11  profilanswer
 

n°1977806
Arcbitre
J'aime ben ça moi, c'est bon!
Posté le 26-03-2010 à 15:35:11  profilanswer
 

Tu veux en faire quoi de ton tableau?  
Parce que tu peux peut-être trouver une solution qui évite le tableau de String.  
La 1ére option est de lire la feuille une fois, déduire la taille, dimensionner la variable puis lancer le traitement.
La 2ème option est de redimensionner le tableau avant chaque ajout, (en cours de traitement) mais c'est moins beau, et consommateur de temps.
 
Et pendant que j'y pense, il n'aura qu'une dimension, ce tableau (une colonne à lire)?
 

n°1977874
spolnix
Posté le 26-03-2010 à 18:21:01  profilanswer
 

Merci pour ta réponse voila ce que j'ai trouvé comme solution pour le moment:
 

Code :
  1. Dim statut() As String
  2.     Dim mStatut As Double
  3.     Dim i As Integer, j As Integer
  4.    
  5.         For i = 2 To 10000 'Parcours de la colonne "Statut"
  6.        
  7.         If ThisWorkbook.Worksheets("Import SPS Altran" ).Cells(i, 2).Value = "" Then 'Sortie de boucle en cas de cellule vide
  8.             Exit For
  9.         End If
  10.        
  11.         j = j + 1
  12.         ReDim Preserve statut(j)
  13.         statut(j) = ThisWorkbook.Worksheets("Import SPS Altran" ).Cells(i, 2).Value
  14.        
  15.         mStatut = Val(statut(j)) 'Extraction de la valeur numerique de chaque statut qui vas permettre de determiner son etat
  16.        
  17.         If mStatut = 0 Then
  18.             ThisWorkbook.Worksheets("Synthèse" ).Range("F14" ).Value = ThisWorkbook.Worksheets("Synthèse" ).Range("F14" ).Value + 1
  19.         End If
  20.        
  21.         Next i


 
Dis moi si tu penses qu'il y a moyen d'optimiser ce code ?


Message édité par spolnix le 26-03-2010 à 18:22:58

---------------
L’impossible est déjà fait, pour les miracles prévoir un délai.
n°1978250
Arcbitre
J'aime ben ça moi, c'est bon!
Posté le 29-03-2010 à 08:37:56  profilanswer
 

Bon bah, je n'ai toujours pas tout compris, mais voilà un code qui fait la même chose, en plus simple.
Dans le code que tu donnes, la variable tableau statut(j) ne sert à rien.
 

Code :
  1. Sub Test()
  2. Dim statut() As String
  3.     Dim objSheetSPS As Worksheet, objSheetSynth As Worksheet
  4.     Dim mStatut As Double
  5.     Dim i As Integer, iCount As Integer
  6.  
  7.         ' Si les noms de feuilles changent, un seul endroit pour mettre le code à jour.
  8.         Set objSheetSPS = ThisWorkbook.Worksheets("Import SPS Altran" )
  9.         Set objSheetSynth = ThisWorkbook.Worksheets("Synthèse" )
  10.        
  11.         i = 1
  12.         Do While objSheetSPS.Cells(i, 2) <> ""  'Parcours de la colonne "Statut"
  13.              'Extraction de la valeur numerique de chaque statut qui vas permettre de determiner son etat
  14.              If Val(objSheetSPS.Cells(i, 2).Value) = 0 Then
  15.                   iCount = iCount + 1
  16.              End If
  17.              i = i + 1
  18.         Loop
  19.         objSheetSynth.Range("F14" ).Value = iCount
  20.        
  21. End Sub


Message édité par Arcbitre le 29-03-2010 à 08:55:34
n°1978761
spolnix
Posté le 30-03-2010 à 10:17:26  profilanswer
 

En fait c'est juste de la manipulation de donnée c'est un tableau qui me permet de faire une synthèse d'un export de donnée. Par exemple dans ma colonne statut je peux avoir 220 statut "Prévisionel" sur 220 lignes mon but est de savoir combien de ligne sur les 2000 exportés ont un statut prévisionel !
J'espère avoir été plus clair ;)
 
Merci pour ton astuce pour éviter le nommage répétitif des feuilles ;)


---------------
L’impossible est déjà fait, pour les miracles prévoir un délai.
n°1979038
SuppotDeSa​Tante
Aka dje69r
Posté le 30-03-2010 à 16:27:56  profilanswer
 

Bonjour
 
Pourquoi passer par du code ??
Vu ta demande, un filtre automatique semble suffire...
 
Ensuite, les listes sharepoint (d'ailleurs, wss ou moss ?) sont accessibles et modifiables avec une base Access...
Donc pour le traitement de données, export etc. pas besoin de code ou vraiment tres tres peu sur Access. Jouer avec des requetes suffira.
 
Cordialement


---------------
Soyez malin, louez entre voisins !
n°1979849
spolnix
Posté le 01-04-2010 à 10:37:02  profilanswer
 

Citation :

Pourquoi passer par du code ??  


 
Pas le choix par la suite le tableau devra avoir des fonction avancées que je ne peux gérer qu'en VBA
 

Citation :

Ensuite, les listes sharepoint (d'ailleurs, wss ou moss ?) sont accessibles et modifiables avec une base Access...  


 
Ca ne m'interesse pas des modifier les données mais seulement de les recupérer et de les synthètiser pour pouvoir les présenter lors de reunion, je ne pense pas que access soit l'outil adequate.


---------------
L’impossible est déjà fait, pour les miracles prévoir un délai.
n°1979920
SuppotDeSa​Tante
Aka dje69r
Posté le 01-04-2010 à 12:31:44  profilanswer
 

spolnix a écrit :

Ca ne m'interesse pas des modifier les données mais seulement de les recupérer et de les synthètiser pour pouvoir les présenter lors de reunion, je ne pense pas que access soit l'outil adequate.


Possible, m'enfin avec Access pour réaliser l'identique de vos 20 lignes de code, une requete toute bete suffit...
 
Ensuite, manipuler des données... Un sgbd, aussi "petit" soit il comme Access, c'est toujours plus simple qu'un tableur, aussi evolué soit il comme Excel.
 
Par exemple, avec Access je fais des stats assez complexes, venant de sources diverses comme sql server ou des listes wss, que j'exporte en xml en vu d'etre utilisé par des outils de graphiques dynamiques en flash, directement dans des formulaires Access... Pour un petit SGBD c'est deja pas mal...
Les outils de graphiques sont ici d'ailleurs si ca interresse qqun.
 
Apres en effet, je ne sais pas ce que tu comptes faire de ce tableau par la suite...


---------------
Soyez malin, louez entre voisins !
n°2000297
gloomy84
Posté le 09-06-2010 à 17:18:05  profilanswer
 

j'ai un probleme encore plus basic  
je veux stocker les données d'une feuille excel sur un tableau en VBA
j'ai penser naturellement a utiliser une double boucle pour remplir mon tableau mais je ne sais pas comme faire balader ma 2eme varibles sur les colones car c'est un chiffre et les cologne sont nommée par des lettres
 
merci de votre aide

n°2000320
SuppotDeSa​Tante
Aka dje69r
Posté le 09-06-2010 à 18:27:13  profilanswer
 

Bonjour
 
A = 1
B = 2
Etc.
 
Regarde du coté Column() ou de Cell()
 
Cordialement


---------------
Soyez malin, louez entre voisins !
mood
Publicité
Posté le 09-06-2010 à 18:27:13  profilanswer
 

n°2000410
gloomy84
Posté le 10-06-2010 à 09:49:20  profilanswer
 

Merci de ta réponse
je pense que j'utilise mal cette fonction.
voila mon code:
 
For J = 3 To 8
 
    For I = 5 To 1071
        Worksheets(3).Cells(J, I) = T(J - 3, I)
    Next I
Next J
 
et le message d'erreur me dit "erreur prédéfinie par l'aplication ou par l'objet
pour le moment j'en suis donc reduit a fair une boucle simple par colone..
ca m'arrangerai vraiment de comprendre le pb de la double boucle

n°2000412
gloomy84
Posté le 10-06-2010 à 10:01:29  profilanswer
 

Ben en faite il fallait que j'inverse I et J...  -_-
les colones sont en 2eme !
Merci du coup de main


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

  Transfert de données d'une feuille excel vers un tableau VBA

 

Sujets relatifs
[VBA - Macro Excel] Masquer colonne sous conditionCocoon et nombre de styles excel
Faire un tableau en parsant des chaines issues de pages HTML dynamiquestockage de tableau de structure en mémoire partagée
Comment allouer de la mémoire pour un tableau (malloc)PHP, Excel et ODBC
synchroniser plusieurs bases de donnees[VBA] macro excel pour envoyer plusieurs fichiers
Plus de sujets relatifs à : Transfert de données d'une feuille excel vers un tableau VBA


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