Bonsoir à tous,
J'ai déclaré un tableau :
---
Public Tableau()
---
et à l'aide du code VBA je le remplie de valeurs :
----
L = 1
For Each Cel In sht2.Range("B2",
sht2.Range("B65536").End(xlUp))
On Error Resume Next
If UCase(Motrech) Like UCase(Cel) Then
Lst1 = Cel.Offset(, -1).Value
Lst2 = Cel.Offset(, 1).Value
Tableau(L, 1) = Lst1: Tableau(L, 2) = Lst2
L = L + 1
End If
Next Cel
----
Est-ce une manière de proceder à éviter de n'avoir pas utiliser Dim ou
Redim Preserve pour la déclaration ou le redimentionnement dynamique
du tableau ?
Merci.
Bonsoir à tous,
J'ai déclaré un tableau :
---
Public Tableau()
---
et à l'aide du code VBA je le remplie de valeurs :
----
L = 1
For Each Cel In sht2.Range("B2",
sht2.Range("B65536").End(xlUp))
On Error Resume Next
If UCase(Motrech) Like UCase(Cel) Then
Lst1 = Cel.Offset(, -1).Value
Lst2 = Cel.Offset(, 1).Value
Tableau(L, 1) = Lst1: Tableau(L, 2) = Lst2
L = L + 1
End If
Next Cel
----
Est-ce une manière de proceder à éviter de n'avoir pas utiliser Dim ou
Redim Preserve pour la déclaration ou le redimentionnement dynamique
du tableau ?
Merci.
Bonsoir à tous,
J'ai déclaré un tableau :
---
Public Tableau()
---
et à l'aide du code VBA je le remplie de valeurs :
----
L = 1
For Each Cel In sht2.Range("B2",
sht2.Range("B65536").End(xlUp))
On Error Resume Next
If UCase(Motrech) Like UCase(Cel) Then
Lst1 = Cel.Offset(, -1).Value
Lst2 = Cel.Offset(, 1).Value
Tableau(L, 1) = Lst1: Tableau(L, 2) = Lst2
L = L + 1
End If
Next Cel
----
Est-ce une manière de proceder à éviter de n'avoir pas utiliser Dim ou
Redim Preserve pour la déclaration ou le redimentionnement dynamique
du tableau ?
Merci.
Bonjour,
Il faut absolument passer par un ReDim (ou prévoir dès le début une
taille de tableau fixée plus large que nécessaire).
De plus, on ne peut modifier que la dernière dimension d'un tableau par
ReDim, donc il faut que tu inverses les indices dans ton tableau :
Public Tableau(,)
'----
ReDim Tableau(2, 1)
L = 1
For Each Cel In sht2.Range("B2",
sht2.Range("B65536").End(xlUp))
On Error Resume Next
If UCase(Motrech) Like UCase(Cel) Then
Lst1 = Cel.Offset(, -1).Value
Lst2 = Cel.Offset(, 1).Value
ReDim Preserve Tableau(2, L)
Tableau(1, L) = Lst1: Tableau(2, L) = Lst2
L = L + 1
End If
Next Cel
Nicolas
Apitos a écrit :
> Bonsoir à tous,
> J'ai déclaré un tableau :
> ---
> Public Tableau()
> ---
> et à l'aide du code VBA je le remplie de valeurs :
> ----
> L = 1
> For Each Cel In sht2.Range("B2",
> sht2.Range("B65536").End(xlUp))
> On Error Resume Next
> If UCase(Motrech) Like UCase(Cel) Then
> Lst1 = Cel.Offset(, -1).Value
> Lst2 = Cel.Offset(, 1).Value
> Tableau(L, 1) = Lst1: Tableau(L, 2) = Lst2
> L = L + 1
> End If
> Next Cel
> ----
> Est-ce une manière de proceder à éviter de n'avoir pas utiliser D im ou
> Redim Preserve pour la déclaration ou le redimentionnement dynamique
> du tableau ?
> Merci.
Bonjour,
Il faut absolument passer par un ReDim (ou prévoir dès le début une
taille de tableau fixée plus large que nécessaire).
De plus, on ne peut modifier que la dernière dimension d'un tableau par
ReDim, donc il faut que tu inverses les indices dans ton tableau :
Public Tableau(,)
'----
ReDim Tableau(2, 1)
L = 1
For Each Cel In sht2.Range("B2",
sht2.Range("B65536").End(xlUp))
On Error Resume Next
If UCase(Motrech) Like UCase(Cel) Then
Lst1 = Cel.Offset(, -1).Value
Lst2 = Cel.Offset(, 1).Value
ReDim Preserve Tableau(2, L)
Tableau(1, L) = Lst1: Tableau(2, L) = Lst2
L = L + 1
End If
Next Cel
Nicolas
Apitos a écrit :
> Bonsoir à tous,
> J'ai déclaré un tableau :
> ---
> Public Tableau()
> ---
> et à l'aide du code VBA je le remplie de valeurs :
> ----
> L = 1
> For Each Cel In sht2.Range("B2",
> sht2.Range("B65536").End(xlUp))
> On Error Resume Next
> If UCase(Motrech) Like UCase(Cel) Then
> Lst1 = Cel.Offset(, -1).Value
> Lst2 = Cel.Offset(, 1).Value
> Tableau(L, 1) = Lst1: Tableau(L, 2) = Lst2
> L = L + 1
> End If
> Next Cel
> ----
> Est-ce une manière de proceder à éviter de n'avoir pas utiliser D im ou
> Redim Preserve pour la déclaration ou le redimentionnement dynamique
> du tableau ?
> Merci.
Bonjour,
Il faut absolument passer par un ReDim (ou prévoir dès le début une
taille de tableau fixée plus large que nécessaire).
De plus, on ne peut modifier que la dernière dimension d'un tableau par
ReDim, donc il faut que tu inverses les indices dans ton tableau :
Public Tableau(,)
'----
ReDim Tableau(2, 1)
L = 1
For Each Cel In sht2.Range("B2",
sht2.Range("B65536").End(xlUp))
On Error Resume Next
If UCase(Motrech) Like UCase(Cel) Then
Lst1 = Cel.Offset(, -1).Value
Lst2 = Cel.Offset(, 1).Value
ReDim Preserve Tableau(2, L)
Tableau(1, L) = Lst1: Tableau(2, L) = Lst2
L = L + 1
End If
Next Cel
Nicolas
Apitos a écrit :
> Bonsoir à tous,
> J'ai déclaré un tableau :
> ---
> Public Tableau()
> ---
> et à l'aide du code VBA je le remplie de valeurs :
> ----
> L = 1
> For Each Cel In sht2.Range("B2",
> sht2.Range("B65536").End(xlUp))
> On Error Resume Next
> If UCase(Motrech) Like UCase(Cel) Then
> Lst1 = Cel.Offset(, -1).Value
> Lst2 = Cel.Offset(, 1).Value
> Tableau(L, 1) = Lst1: Tableau(L, 2) = Lst2
> L = L + 1
> End If
> Next Cel
> ----
> Est-ce une manière de proceder à éviter de n'avoir pas utiliser D im ou
> Redim Preserve pour la déclaration ou le redimentionnement dynamique
> du tableau ?
> Merci.
> Pour Nicholas : ça veut dire qu'on ne peut redimentionner que les
Bonjour,
Pour Nicholas : ça veut dire qu'on ne peut redimentionner que les
colonnes d'un tableau avec Redim Preserve ?
et merci pour LSteph.
> Pour Nicholas : ça veut dire qu'on ne peut redimentionner que les
Bonjour,
Pour Nicholas : ça veut dire qu'on ne peut redimentionner que les
colonnes d'un tableau avec Redim Preserve ?
et merci pour LSteph.
> Pour Nicholas : ça veut dire qu'on ne peut redimentionner que les
Bonjour,
Pour Nicholas : ça veut dire qu'on ne peut redimentionner que les
colonnes d'un tableau avec Redim Preserve ?
et merci pour LSteph.
> Nicholas : tu as vu ? mechdenis a utilisé Redim pour redimentionner
michdenis : comme je m'en sert de mon tableau pour alimenter une
Listbox, alors s'il n'y a que trois mots retrouvés sur 300 lignes, la
ListBox sera composée en plus des trois mots par 297 lignes vides !!!
alors je vais essayé avec l"idée de nicholas.
----
Sub test()
Dim Col As New Collection
For Each Cel In sht2.Range("B2", sht2.Range("B65536").End(xlUp))
On Error Resume Next
If UCase(Motrech) Like UCase(Cel) Then
Lst1 = Cel.Offset(, -1).Value
Lst2 = Cel.Offset(, 1).Value
Col.Add Array(Lst1, Lst2)
End If
Next Cel
End Sub
---
Nicholas : tu as vu ? mechdenis a utilisé Redim pour redimentionner
aussi les lignes d'un tableau ?
> Nicholas : tu as vu ? mechdenis a utilisé Redim pour redimentionner
michdenis : comme je m'en sert de mon tableau pour alimenter une
Listbox, alors s'il n'y a que trois mots retrouvés sur 300 lignes, la
ListBox sera composée en plus des trois mots par 297 lignes vides !!!
alors je vais essayé avec l"idée de nicholas.
----
Sub test()
Dim Col As New Collection
For Each Cel In sht2.Range("B2", sht2.Range("B65536").End(xlUp))
On Error Resume Next
If UCase(Motrech) Like UCase(Cel) Then
Lst1 = Cel.Offset(, -1).Value
Lst2 = Cel.Offset(, 1).Value
Col.Add Array(Lst1, Lst2)
End If
Next Cel
End Sub
---
Nicholas : tu as vu ? mechdenis a utilisé Redim pour redimentionner
aussi les lignes d'un tableau ?
> Nicholas : tu as vu ? mechdenis a utilisé Redim pour redimentionner
michdenis : comme je m'en sert de mon tableau pour alimenter une
Listbox, alors s'il n'y a que trois mots retrouvés sur 300 lignes, la
ListBox sera composée en plus des trois mots par 297 lignes vides !!!
alors je vais essayé avec l"idée de nicholas.
----
Sub test()
Dim Col As New Collection
For Each Cel In sht2.Range("B2", sht2.Range("B65536").End(xlUp))
On Error Resume Next
If UCase(Motrech) Like UCase(Cel) Then
Lst1 = Cel.Offset(, -1).Value
Lst2 = Cel.Offset(, 1).Value
Col.Add Array(Lst1, Lst2)
End If
Next Cel
End Sub
---
Nicholas : tu as vu ? mechdenis a utilisé Redim pour redimentionner
aussi les lignes d'un tableau ?