Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplir un tableau à partir d'une plage

9 réponses
Avatar
FdeCourt
Bonjour,

En VBA Je cherche =E0 remplir un tableau =E0 partir d'une plage de
cellule qui n'est pas dans la feuille active.
En mettant :

reference =3D Range("G11:G394")
ca passe

Par contre, en mettant
reference=3D Sheets(3).Range("G11:G394")
ca me renvoit une erreur 13
Mon tableau est d=E9clar=E9 comme Variant et j'ai besoin de la deuxi=E8me
solution, mais je dois rater quelque chose !

Merci pour votre aide

9 réponses

Avatar
lSteph
Bonjour,
en utilisant le codename de la feuille...
exemple:

Sub test()
Dim montab
Set montab = Feuil1.Range("G11:G394")
MsgBox CStr(montab(5))
End Sub

'cdlt
'lSteph

Bonjour,

En VBA Je cherche à remplir un tableau à partir d'une plage de
cellule qui n'est pas dans la feuille active.
En mettant :

reference = Range("G11:G394")
ca passe

Par contre, en mettant
reference= Sheets(3).Range("G11:G394")
ca me renvoit une erreur 13
Mon tableau est déclaré comme Variant et j'ai besoin de la deuxième
solution, mais je dois rater quelque chose !

Merci pour votre aide


Avatar
MichDenis
| reference= Sheets(3).Range("G11:G394")
ça devrait passer

Pourquoi ne pas utiliser le nom de l'onglet de la feuille
ou la Propriété Name pour écrire ton code au lieu de
l'index de la feuille ? Qu'est-ce qu'il y a dans les cellules
de sheets(3) ? Des cellules fusionnées ?



"FdeCourt" a écrit dans le message de news:

Bonjour,

En VBA Je cherche à remplir un tableau à partir d'une plage de
cellule qui n'est pas dans la feuille active.
En mettant :

reference = Range("G11:G394")
ca passe

Par contre, en mettant
reference= Sheets(3).Range("G11:G394")
ca me renvoit une erreur 13
Mon tableau est déclaré comme Variant et j'ai besoin de la deuxième
solution, mais je dois rater quelque chose !

Merci pour votre aide
Avatar
JB
En ne déclarant pas le tableau, il n'y a pas de message d'erreur!

JB

Bonjour,

En VBA Je cherche à remplir un tableau à partir d'une plage de
cellule qui n'est pas dans la feuille active.
En mettant :

reference = Range("G11:G394")
ca passe

Par contre, en mettant
reference= Sheets(3).Range("G11:G394")
ca me renvoit une erreur 13
Mon tableau est déclaré comme Variant et j'ai besoin de la deuxième
solution, mais je dois rater quelque chose !

Merci pour votre aide


Avatar
FdeCourt
MichDenis,

J'ai essayer avec le nom de la feuille aussi, mais ca ne marche
toujours pas.
Sinon, Range("G11:G394") n'est qu'une colonne de cellule simple, avec
chacune 1 chiffre, qui devrait faire référence à une colonne (enfin,
je me comprend :D)
Ma macro peut lire directement dans la cellule a chaque fois, mais je
cherche à optimiser au maximum mon truc. Alors je cherche a essayer de
mettre le tableau en mémoire pour voir si ce n'est pas plus rapide.


| reference= Sheets(3).Range("G11:G394")
ça devrait passer

Pourquoi ne pas utiliser le nom de l'onglet de la feuille
ou la Propriété Name pour écrire ton code au lieu de
l'index de la feuille ? Qu'est-ce qu'il y a dans les cellules
de sheets(3) ? Des cellules fusionnées ?



"FdeCourt" a écrit dans le message de news:

Bonjour,

En VBA Je cherche à remplir un tableau à partir d'une plage de
cellule qui n'est pas dans la feuille active.
En mettant :

reference = Range("G11:G394")
ca passe

Par contre, en mettant
reference= Sheets(3).Range("G11:G394")
ca me renvoit une erreur 13
Mon tableau est déclaré comme Variant et j'ai besoin de la deuxième
solution, mais je dois rater quelque chose !

Merci pour votre aide


Avatar
MichDenis
Le type de truc que tu utilises s'exécute très bien avec Excel 2003,
mais ce serait une bonne idée de ne pas définir le type de variable
reference dans la déclaration de celle-ci. Je n'ai pas d'explication...
si ce n'est qu'un "bug" !

Dim reference


"FdeCourt" a écrit dans le message de news:

MichDenis,

J'ai essayer avec le nom de la feuille aussi, mais ca ne marche
toujours pas.
Sinon, Range("G11:G394") n'est qu'une colonne de cellule simple, avec
chacune 1 chiffre, qui devrait faire référence à une colonne (enfin,
je me comprend :D)
Ma macro peut lire directement dans la cellule a chaque fois, mais je
cherche à optimiser au maximum mon truc. Alors je cherche a essayer de
mettre le tableau en mémoire pour voir si ce n'est pas plus rapide.


| reference= Sheets(3).Range("G11:G394")
ça devrait passer

Pourquoi ne pas utiliser le nom de l'onglet de la feuille
ou la Propriété Name pour écrire ton code au lieu de
l'index de la feuille ? Qu'est-ce qu'il y a dans les cellules
de sheets(3) ? Des cellules fusionnées ?



"FdeCourt" a écrit dans le message de news:

Bonjour,

En VBA Je cherche à remplir un tableau à partir d'une plage de
cellule qui n'est pas dans la feuille active.
En mettant :

reference = Range("G11:G394")
ca passe

Par contre, en mettant
reference= Sheets(3).Range("G11:G394")
ca me renvoit une erreur 13
Mon tableau est déclaré comme Variant et j'ai besoin de la deuxième
solution, mais je dois rater quelque chose !

Merci pour votre aide


Avatar
FdeCourt
Merci ISteph, ca marche correctement.
Je déclarais mon tableau comme ca Dim montab() as Variant.
Serait-ce la raison pour laquelle il ne marchait pas ?




Bonjour,
en utilisant le codename de la feuille...
exemple:

Sub test()
Dim montab
Set montab = Feuil1.Range("G11:G394")
MsgBox CStr(montab(5))
End Sub

'cdlt
'lSteph

Bonjour,

En VBA Je cherche à remplir un tableau à partir d'une plage de
cellule qui n'est pas dans la feuille active.
En mettant :

reference = Range("G11:G394")
ca passe

Par contre, en mettant
reference= Sheets(3).Range("G11:G394")
ca me renvoit une erreur 13
Mon tableau est déclaré comme Variant et j'ai besoin de la deuxiè me
solution, mais je dois rater quelque chose !

Merci pour votre aide




Avatar
JB
voir exemple en pj: http://cjoint.com/?lpnDumINoR

JB

Bonjour,

En VBA Je cherche à remplir un tableau à partir d'une plage de
cellule qui n'est pas dans la feuille active.
En mettant :

reference = Range("G11:G394")
ca passe

Par contre, en mettant
reference= Sheets(3).Range("G11:G394")
ca me renvoit une erreur 13
Mon tableau est déclaré comme Variant et j'ai besoin de la deuxième
solution, mais je dois rater quelque chose !

Merci pour votre aide


Avatar
FdeCourt
Merci à tous, j'ai utilisé la solution de ISteph, car il falait que
je déclare mon tableau comme public.



Bonjour,

En VBA Je cherche à remplir un tableau à partir d'une plage de
cellule qui n'est pas dans la feuille active.
En mettant :

reference = Range("G11:G394")
ca passe

Par contre, en mettant
reference= Sheets(3).Range("G11:G394")
ca me renvoit une erreur 13
Mon tableau est déclaré comme Variant et j'ai besoin de la deuxième
solution, mais je dois rater quelque chose !

Merci pour votre aide


Avatar
lSteph
Bonjour,

Pour l'histoire de public il me semble autre chose

Amha , si la solution que j'ai proposée fonctionne
ce serait plutôt pour les raisons envisagées par MichDenis:

Pourquoi ne pas utiliser le nom de l'onglet de la feuille
ou la Propriété Name pour écrire ton code au lieu de
l'index de la feuille ?


et cette autre :

Ne pas mettre de type implique un Variant
Set s'implique dans l'utilisation d'un objet
Selon le contexte d'utilisation ou réutilisation de la variable
stockée
pour libèrer utiliser Set montab=Nothing avant le End Sub


Option Explicit
Public montab

Sub test()

Set montab = Feuil1.Range("G11:G394")
MsgBox CStr(montab(5))
'Set montab = Nothing 'voir avec et sans
'le comportement
'de test puis retest
'penser à reinitialiser après le plantage
End Sub
Sub retest()
MsgBox CStr(montab(6))
End Sub

'Cdlt
'lSteph

Merci ISteph, ca marche correctement.
Je déclarais mon tableau comme ca Dim montab() as Variant.
Serait-ce la raison pour laquelle il ne marchait pas ?




Bonjour,
en utilisant le codename de la feuille...
exemple:

Sub test()
Dim montab
Set montab = Feuil1.Range("G11:G394")
MsgBox CStr(montab(5))
End Sub

'cdlt
'lSteph

Bonjour,

En VBA Je cherche à remplir un tableau à partir d'une plage de
cellule qui n'est pas dans la feuille active.
En mettant :

reference = Range("G11:G394")
ca passe

Par contre, en mettant
reference= Sheets(3).Range("G11:G394")
ca me renvoit une erreur 13
Mon tableau est déclaré comme Variant et j'ai besoin de la deuxi ème
solution, mais je dois rater quelque chose !

Merci pour votre aide