Colonne Excel vers Tableau VBA?
Gigix
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Dans le cadre de ma formation à l'IUT de Nantes, j'ai besoin d'importer une colonne de données vers un tableau Excel pour comparer les valeurs qu'elle contient.
Cordialement,
Dans le cadre de ma formation à l'IUT de Nantes, j'ai besoin d'importer une colonne de données vers un tableau Excel pour comparer les valeurs qu'elle contient.
Cordialement,
A voir également:
- Colonne Excel vers Tableau VBA?
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Tableau word - Guide
- Formule somme excel colonne - Guide
- Imprimer tableau excel sur une page - Guide
1 réponse
Bonjour,
Je considère, dans les exemples proposés, qu'il s'agit de la colonne A...
Deux solutions :
La boucle :
Application.Transpose :
!!! Variante de la solution 2 pour les "heureux" (;-)) possesseurs de la version Excel 97...
Attention, Xl97 créé un tableau multidimensionnel à une seule colonne. La restitution des données se fera grâce à MonTab(Lig, 1) au lieu de MonTab(Lig).
Les différences entre ces deux méthodes (boucle ou transpose) sont :
- vitesse d'exécution, + rapide pour Application.Transpose (le gain n'est significatif que sur de très grands tableaux... A titre d'exemple sur 45 000 lignes : boucle en 0,60 sec, transpose en 0,04 sec!)
- la restitution des données se fera en Base 0 par défaut pour la boucle, et en Base 1 pour Transpose :
Boucle :
Application.Transpose :
- La non nécessité de dimensionner lors de l'utilisation de Transpose. On voit dans mes exemples de boucle la présence de ReDim ou accessoirement Preserve. Ces deux instructions sont superflues dans l'utilisation de Application.Transpose.
Je considère, dans les exemples proposés, qu'il s'agit de la colonne A...
Deux solutions :
La boucle :
Dim Lig As Long, DernLig As Long Dim MonTab() DernLig = Range("A" & Rows.Count).End(xlUp).Row ReDim MonTab(DernLig) For Lig = 0 To DernLig - 1 MonTab(Lig) = Range("A" & Lig + 1) Next
Application.Transpose :
Dim MonTab Dim DrLig As Long DrLig = Range("A" & Rows.Count).End(xlUp).Row MonTab = Application.Transpose(Range("A1:A" & DrLig).Value)
!!! Variante de la solution 2 pour les "heureux" (;-)) possesseurs de la version Excel 97...
Dim MonTab Dim DrLig As Long DrLig = Range("A" & Rows.Count).End(xlUp).Row MonTab = Range("A1:A" & DrLig)
Attention, Xl97 créé un tableau multidimensionnel à une seule colonne. La restitution des données se fera grâce à MonTab(Lig, 1) au lieu de MonTab(Lig).
Les différences entre ces deux méthodes (boucle ou transpose) sont :
- vitesse d'exécution, + rapide pour Application.Transpose (le gain n'est significatif que sur de très grands tableaux... A titre d'exemple sur 45 000 lignes : boucle en 0,60 sec, transpose en 0,04 sec!)
- la restitution des données se fera en Base 0 par défaut pour la boucle, et en Base 1 pour Transpose :
Boucle :
Dim Lig As Long, DernLig As Long Dim MonTab() 'Remplissage DernLig = Range("A" & Rows.Count).End(xlUp).Row ReDim MonTab(DernLig) For Lig = 0 To DernLig - 1 MonTab(Lig) = Range("A" & Lig + 1) Next 'Restitution For Lig = 0 To Ubound(MonTab) Range("B" & Lig + 1) = MonTab(Lig) Next
Application.Transpose :
Dim MonTab Dim DrLig As Long, Lig As Long 'Remplissage DrLig = Range("A" & Rows.Count).End(xlUp).Row MonTab = Application.Transpose(Range("A1:A" & DrLig).Value) 'Restitution For Lig = 1 To Ubound(MonTab) Range("B" & Lig + 1) = MonTab(Lig) Next
- La non nécessité de dimensionner lors de l'utilisation de Transpose. On voit dans mes exemples de boucle la présence de ReDim ou accessoirement Preserve. Ces deux instructions sont superflues dans l'utilisation de Application.Transpose.
au lieu de
1 seule ligne
Mais je crois que gigix est parti passer son DUT...