Excel VBA tableau

bigmousse

XLDnaute Occasionnel
Bonjour,
Petit souci avec VBA j'aimerais placer dans un tableau une plage de valeur, la colonne A et la colonne B, jusque là tout va bien :

Code:
TAB_BD_N°CTRL = BD_N°CTRL.Range("A1:B" & NB_LIGNE)

Maintenant je veux placer la colonne H egalement

Code:
TAB_BD_N°CTRL = BD_N°CTRL.Range("A1:B" & NB_LIGNE, "H1:H" & NB_LIGNE)


Et là c'est les colonnes de A à H qui sont dans mon tableau
Ai-je fais une erreur de synthaxe...
Merci
à+
 
Dernière édition:

bigmousse

XLDnaute Occasionnel
Re : Excel VBA tableau

Merci Robert mais ça ne fonctionne pas

J'ai essayé ça également :
Code:
 With BD_N°CTRL
 TAB_BD_N°CTRL = Application.Union(.Range(.Cells(1, 1), _
 .Cells(NB_LIGNE, 2)), .Range(.Cells(1, 8), .Cells(NB_LIGNE, 8)))
 End With

Mon tableau comporte tjrs deux colonnes et pas la troisième..
 

bigmousse

XLDnaute Occasionnel
Re : Excel VBA tableau

Je l'ai déclaré comme ceci :
Code:
Dim TAB_BD_N°CTRL

Je ne lui ai pas affecté de type ni de dimension, car après plusieurs essais j'y suis pas arrivé.
Une source exemple declare ce tableau comme indiqué ci-dessus, comme ça fonctionne je n'ai pas insisté.
Là ou je comprends pas c'est qu'un tableau commence par un indice "0".
Celui-ci non, pourquoi? je ne sais pas...

Je suis en train de tester et d'essayer de comprendre avec une procedure plus simple :

Code:
Sub main()
Dim Ma_Feuille As Worksheet
Dim Ma_Plage As Range
Dim TABLEAU
Set Ma_Feuille = ThisWorkbook.Worksheets("Feuil1")
Set Ma_Plage = Application.Union(Ma_Feuille.Range("A1:B" & 10), Ma_Feuille.Range("E1:E" & 10))
TABLEAU = Ma_Plage
End Sub

Merci pour ton aide
 

bigmousse

XLDnaute Occasionnel
Re : Excel VBA tableau

Je viens de faire un essai avec deux colonnes contiguës, lorsque je fais un essai avec deux colonnes non contiguës, ça ne fonctionne pas.


ça marche
Code:
Set Mon_Range = Application.Union(Ma_Feuille.Range("A1:A3"), Ma_Feuille.Range("B1:B3"))
TABL = Mon_Range

ça ne marche pas
Code:
Set Mon_Range = Application.Union(Ma_Feuille.Range("A1:A3"), Ma_Feuille.Range("C1:C3"))
TABL = Mon_Range
 

Pierrot93

XLDnaute Barbatruc
Re : Excel VBA tableau

Bonjour,

regarde ceci, à exécuter pas à pas (touche F8 dans l'éditeur vba), les "select" ne sont là que pour la démo...

Code:
Dim ws As Worksheet, plage As Range
Set ws = ActiveWorkbook.ActiveSheet
With ws
    Set plage = .Range("A:B")
    plage.Select
    Set plage = Union(plage, .Range("H:H"))
    plage.Select
End With

bon après midi
@+
 

bigmousse

XLDnaute Occasionnel
Re : Excel VBA tableau

Jusque là j'ai compris voilà mes trois colonnes de selectionnés ou un bject Range avec 3 colonnes.
Je veux mettre tout ça dans un tableau

Code:
Sub main2()
Dim ws As Worksheet, plage As Range
Set ws = ActiveWorkbook.ActiveSheet
Dim tabl
With ws
    Set plage = .Range("A:B")
    plage.Select
    Set plage = Union(plage, .Range("H:H"))
    plage.Select
    tabl = plage
End With
End Sub

J'ai bien mon tableau mais avec seulement 2 colonnes.
Moi j'aimerais avoir le total c'est à dire 3 colonnes
:confused:

Merci
 

bigmousse

XLDnaute Occasionnel
Re : Excel VBA tableau

Bon, je reprends mon explication, et je m'excuse de ne pas m'être fait comprendre :

Code:
Sub main()
Dim Ma_Feuille As Worksheet
Set Ma_Feuille = ThisWorkbook.Worksheets("Feuil1")

'Je veux unir la plage A1:B10 avec C1:C10 et entrer les valeurs dans un tableau
'Le tableau s'appelle TAB_Plage
'Les deux plages sont contiguës
'dans l'explorateur de variable TAB_Plage possède bien 3 dimensions

Dim TAB_Plage
Dim Ma_Plage As Range
Set Ma_Plage = Application.Union(Ma_Feuille.Range("A1:B10"), _
Ma_Feuille.Range("C1:C10"))
TAB_Plage = Ma_Plage

'Je veux unir la plage A1:B10 avec D1:D10 et entrer les valeurs dans un tableau
'Le tableau s'appelle TAB_Range
'Les deux plages **ne sont pas contiguës**
'dans l'explorateur de variable TAB_Plage possède seulement 2 dimensions
' Quelle est la limite de la méthode UNION?????

Dim TAB_Range
Dim Mon_Range As Range
Set Mon_Range = Application.Union(Ma_Feuille.Range("A1:B10"), _
Ma_Feuille.Range("D1:D10"))
TAB_Range = Mon_Range

End Sub


Le deuxième bout de code (TAB_Range), ne me satisfait pas puisque je ne récupère pas toutes les colonnes de l'objet Mon_Range dans mon tableau TAB_Range.

Le premier bout lui fonctionne, y a t'il un rapport avec le fait que les plages ne sont pas contigües dans le deuxième bout??



Merci pour votre aide
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Excel VBA tableau

Re,

regarde les codes ci-dessous pour alimentation tableau virtuel par 3 colonnes non contigues, 1ere dimension est déterminée selon le nombre de ligne de la colonne A.... en espérant que cela puisse t'aider à avancer.... perso pas de solution directe avec union ou range....

Code:
Option Explicit
Sub test()
Dim t() As Variant, i As Long
ReDim t(0 To Range("A65536").End(xlUp).Row, 0 To 2)
For i = LBound(t) To UBound(t)
    t(i, 0) = Cells(i + 1, 1).Value
    t(i, 1) = Cells(i + 1, 2).Value
    t(i, 2) = Cells(i + 1, 8).Value
Next i
End Sub
Sub test2()
Dim t() As Variant, x As Long, i As Long
x = Range("A65536").End(xlUp).Row
t = Range("A1:B" & x).Value
ReDim Preserve t(1 To x, 1 To 3)
For i = 1 To x
    t(i, 3) = Cells(i, 8).Value
Next i
End Sub
 

Discussions similaires

Réponses
9
Affichages
225

Statistiques des forums

Discussions
312 558
Messages
2 089 596
Membres
104 220
dernier inscrit
Fredericchau