Affecter une zone nomée a un array

xavier44

XLDnaute Nouveau
Bonsoir le forum
Peut-on passer a un array (tab) une zone de nom sans faire référence a son emplacement ?
merci
 

ChTi160

XLDnaute Barbatruc
Salut xavier44
je me suis amusé à faire celà Lol
un barbatruc peut être Lol
voir pièce jointe
Sub Zone()
Dim myArray(9) As Variant
Dim c As Byte, L As Byte
Dim Liste1 As String
Dim Liste2 As String
With Worksheets('Feuil1')
'Trois Zones nommées Liste1 à liste9
For L = 0 To UBound(myArray) - 1
myArray(L) = .Range('Liste' & L + 1)
Next
End With
'recherche de la valeur L
For c = 0 To UBound(myArray) - 1
If myArray(c) = 'L' Then MsgBox myArray(c)
Next
End Sub
Amicalement
Jean Marie
OupssssssssssssSalut Didier
[file name=Essai_Array.zip size=7091]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Essai_Array.zip[/file]

Message édité par: ChTi160, à: 27/04/2005 23:45
 
Dernière édition:

joliemaman007

XLDnaute Nouveau
Bonjour tout le monde;

j'ai un petit probleme similaire a celui ci mais avec ma logique défiant toute concurence, je me suis moi-meme mise dans une galere.

J'ai une feuille qui contient 70 (si si) cellule nommées avec des noms tels que ID, item_1, item_1a, item_1b, item_2,Item_44b comments, etc etc.

J'essaye de stocker tous ces noms (qui se trouvent TOUS sur la meme feuille : Modif_Record) dans un Array que je veux pouvoir utiliser tout au long de mon programme.

Ce que j'ai commencé à faire:

Option Explicit
Dim BaseItem As Variant

'+++++++++++++++++++++++++++++++++++
'-
'- INITIALISATION:
'- DEFINITION DES VARIABLES / CONSTANTES DU PROGRAMME
'-
'+++++++++++++++++++++++++++++++++++
Sub Constantes()

'la je voudrais faire une boucle qui va attribuer les champs dans l'ordre numérique (1,2,2a,2b,3,3a,4,4a,4b, ....) dans BaseItem

J'ai trouvé dans l'aide de Excel un exemple, mais je n'arrive pas a le modifier pour que cela fasse ce que je veux. Voici ce sur quoi je pars ...

'Use the Names property to return the Names collection.
'The following example creates a list of all the names in the active workbook,
'plus the addresses they refer to.

Dim BaseItem As Variant
Dim nms As Variant
Dim r As Integer

Worksheets('Modif_Record').Activate

Set nms = ActiveWorkbook.Names
Set BaseItem = Worksheets('Modif_Record')

For r = 1 To nms.Count

BaseItem.Cells(r, 2).Value = nms(r).Name
BaseItem.Cells(r, 3).Value = nms(r).RefersToRange.Address

Next
'ca c'est pour vérifier .... mais ca bug avant alors .... For r = 1 To nms.Count
MsgBox ('Cellules nommées dans la feuille: ') & BaseItem & _
'Nom de la zone : ----> ' & BaseItem.Cells(r, 2) & _
'Adresse: ----> ' & BaseItem.Cells(r, 3)
Next

End Sub

Mais je pense ne pas bien comprendre comment cela fonctionne.
Y a t il un moyen de récuperer les noms des champs dans un intercalaire et de les stocker dans un array de facon simple et efficace ?

Merci d'avance pour celui ou celle qui pourra me depatouiller ....
Je n'utilise pas les USF. J'utilise les champs a l'interieur des feuilles a la place.

(peux pas attacher fichier; il fait 400k)

Jolie Maman
------------
Pourquoi faire simple quand on peut faire compliqué ?
 

joliemaman007

XLDnaute Nouveau
Bon ben j'ai trouvé. Maintenant, mon bout de VBA donne :

Option Explicit
Public NomDeLaFeuille As String 'variable pour le passage a EffaceChamps

Dim BaseTemporaire(80) As Variant
Dim BaseItem(80, 2) As Variant
Public Numero_Trouve As Range 'pour pouvoir utiliser le resultat dans TOUT le programme


'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'-
'- INITIALISATION: DEFINITION DES VARIABLES / CONSTANTES DU PROGRAMME
'-
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Sub Constantes()

Dim NomsDesChamps As Variant
Dim r As Integer
NomDeLaFeuille = 'Modif_Record'

Worksheets(NomDeLaFeuille).Activate

Set NomsDesChamps = Worksheets(NomDeLaFeuille).Names

For r = 1 To NomsDesChamps.Count

BaseItem(r, 1) = NomsDesChamps(r).Name
BaseItem(r, 2) = NomsDesChamps(r).RefersToRange.Address

Next
'Le petit bout ci-dessous me permet juste de vérifier ce qui est sauvegardé; Cette partie disparaitra quand tout me conviendra; au moins comme ca, je peux mieux comprendre ....

MAIS l'ordre des champs ne me convient pas.
'maintenant, il faut que l'ordre d'enregistrement soit:
'item_1, item_2, item_3, item_4, item_4a, item_4b, item_4c, item_5,...)

'POUR LE MOMENT c'est item_1, item_10,


For r = 1 To NomsDesChamps.Count
MsgBox ('Nom de la feuille: --------------------> ') & NomDeLaFeuille & Chr(13) &
'Nom de la zone : ---------------------> ' & BaseItem(r, 1) & Chr(13) & _
'Adresse: -----------------------------> ' & BaseItem(r, 2)
Next

End Sub

Reste maintenant la gestion de l'ordre de sauvegarde des champs .... Quelqu'un a t il une idee ?

Jolie maman
 

Discussions similaires

Réponses
20
Affichages
526

Statistiques des forums

Discussions
312 329
Messages
2 087 335
Membres
103 520
dernier inscrit
Azise