Fonction INDIRECT() dans VBA

  • Initiateur de la discussion Anynoor
  • Date de début
A

Anynoor

Guest
Bonjour,

Je suis novice en VB sur excel, je suis en train d'essayrer de créer un macro pour extraire les données de ma BD selon certins critères.

Mais je bloque sur la fonction indirect()

Au niveau de CriteriaRange:=Range('r8')

A savoir R8 = A1:F2 ou A1F3 ou A1:F4.... selon le nombre de lignes de critères.

J'aimerais que le champ CriteriaRange soit dynamique, ça fonctionne bien si je rentre : indirec(r8), mais dès que je veux automatiser cette donnée, elle garde la dernière valeur.

Voici mon code :


Sheets('Données extraits').Select
Cells.Select
Selection.EntireRow.Hidden = False
Range('A2:F6').Select
Selection.Sort Key1:=Range('B2'), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
Range('D10').Select

Range('BD').AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range('r8'), CopyToRange:=Range('A10'), Unique:=False
Rows('1:9').Select
Range('A9').Activate
Selection.EntireRow.Hidden = True

End Sub

Merci pour votre aide

Bonne soirée
 
P

Philippe

Guest
Range('BD').AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range('r8'), CopyToRange:=Range('A10'),

Range('BD').AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range('A1:F' & i), CopyToRange:=Range('A10'),

Déclare i en variable comprise entre 2 et 4 ??
 
A

Anynoor

Guest
Rebonsoir,

J'ai déclaré la variable i, i= nb.si(r2:r6;VRAI)

Mais... j'ai dû faire une bêtise quelque part car le macro ne fonctionne pas

Vous pouvez m'aider

Voici le code modifié, j'espère ne pas paraître trop nulle, mais c'est ma première tentative...


Sub EXTRAIRE()
'
' EXTRAIRE Macro
' Macro enregistrée le 07/03/2005 par Anynoor

Sheets('Données extraits').Select

Dim I As Integer
I= nb.si(r2:r6;VRAI)

Cells.Select
Selection.EntireRow.Hidden = False
Range('A2:F6').Select
Selection.Sort Key1:=Range('B2'), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
Range('D10').Select
Range('BD').AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range('A1:Q' & I), CopyToRange:=Range('A10'), Unique:=False
Rows('1:9').Select
Range('A9').Activate
Selection.EntireRow.Hidden = True

End Sub







Merci

Anynoor :( :eek:
 
A

aram

Guest
salut Anynoor,
salut Philippe,
salut le Forum,

Anynoor, tu te déckares novice et je te vois sans re-réponse après échec.
J'en ai assez bavé pour compatir.
Philippe, je me suis permis de reprendre 'Range(\\'A1:F\\' & i)'
et d'élaguer ce qui ne concerne pas l'extraction elle-même.
Anynoor saura sûrement replacer les trier, masquer etc qui lui conviennent.
J'ai agrémenté le tout d'un bouton et d'un nettoyeur de zone;
à ma bien modeste sauce.

Aninoor, j'ignore comment tu désires extraire tes données,
toutefois, à destination du, non, de la novice, l'exprsession des critères
ne répond pas forcément VRAI.
C'est pourquoi, j'ai fabriqué un compteur à ma façon, certainement peu élégante.
D'autres sauraient mieux s'y prendre.
J'ose même outrepasser la question du VBA et te conseiller de bien
essayer les diverse syntaxes des zones de critères ... entêtes ET expressions ;
car pour mon usage, j'ai beaucoup peiné à m'y retrouver.

continuez bien
Aram



[file name=exemple-extract&indirect_20050309235908.zip size=0]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/exemple-extract&indirect_20050309235908.zip[/file]
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Aram, Anymore, non AnyNore, le reste du monde

Juste pour dire que ton fichier n'est pas passé ce doit être le '&'

Bonne nuit, pourtant j'aime bien ta syntax de Post, et inscrit toi au fait ;)

@+Thierry ;) (plus de battery !!!)
 

Aram

XLDnaute Nouveau
salut Anynoor,
salut Philippe,
salut le Forum,
le fichier,
je l'ai foiré.
je recom.

bye
Aram [file name=extract&indirect_20050310001301.zip size=0]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/extract&indirect_20050310001301.zip[/file]
 

Aram

XLDnaute Nouveau
salut Anynoor,
salut Philippe,
salut le Forum,
le fichier,
je l'ai foiré.
je recom.

bye
Aram [file name=extract&indirect_20050310001340.zip size=0]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/extract&indirect_20050310001340.zip[/file]
 

Aram

XLDnaute Nouveau
salut,
salut,
salut,
salut,

bis repetita sans &, cette fois.
nan mais faut y croire, un apostolat.

je ré-essaye.

bye
Aram
[file name=extract_indirect.zip size=0]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/extract_indirect.zip[/file]
 

Aram

XLDnaute Nouveau
[file name=extractindirect.zip size=0]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/extractindirect.zip[/file]
extractindirect.zip
[file name=extractindirect.zip size=0]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/extractindirect.zip[/file]
salut
salut
salut

dernir essai

bye

Aram

Message édité par: aram, à: 10/03/2005 21:15

Message édité par: aram, à: 10/03/2005 21:18
 
A

Anynoor

Guest
Bonjour à toutes et à tous,

Par ce message, je tiens à remercier Aram pour sa gentillesse ainsi que plusieurs tentatives pour m'aider à résoudre le problème.

Désolée d'avoir tardé à te répondre, mais après avoir attendu quelques temps une réponse en vaine, j'avais décidé de changer un peu mes formules et réécrire mon code et ... miracle ça a marché ! :)

Voici le code :

Code:
Sub EXTRAIRE()
'
' EXTRAIRE Macro
' Macro enregistrée le 07/03/2005 par Anynoor

Sheets('Données extraits').Select

Dim I As Integer
I = Range('r8').Value

Cells.Select
    Selection.EntireRow.Hidden = False
    Range('A2:F6').Select
    Selection.Sort Key1:=Range('B2'), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers
    Range('D10').Select
    Range('BD').AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range('A1:Q' & I), CopyToRange:=Range('A10'), Unique:=False
    Rows('1:9').Select
    Range('A9').Activate
    Selection.EntireRow.Hidden = True

End Sub

C'est loin d'être aussi élégant que tous ceux que j'ai eu l'occasion de voir sur ce forum, mais je suis quand même contente car j'ai réussi à faire mon premier macro !

;)

Aram, je n'arrive pas à ouvrir tes différents fichiers, j'aimerais beaucoup le voir, je suis sûre qu'il va m'apprendre pleines de nouvelles choses.
Peux-tu me l'envoyer dans ma boîte mail perso s'il te plaît ?

sincery_fr@yahoo.fr

Merci pour tes encouragements.

Bon après-midi

Anynoor
 

Discussions similaires