Critères de selection dans une variable

chrisdu73

XLDnaute Occasionnel
Bonjour,
Avec ce code j'aurai voulu savoir s'il était possible de mettre mes critères de sélection dans une variable qui se trouverai sur une feuille dans un autre fichier et sur un lecteur différent?
exemple "C:\ paramétrage.xls" en "Feuil1", et mes critères sont en colonne de C2 à C20


Code:
    Sheets("Import").Select
    Range("A1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$H$263").AutoFilter Field:=2, Criteria1:=Array("BD", "001", "005", "RE", "RS"), Operator:=xlFilterValues
    With ActiveWindow
    End With
    Cells.Select
    Selection.Copy
    Sheets.Add After:=Sheets(Sheets.Count)
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Sheets(Sheets.Count).Name = "IMP04"

Merci pour votre aide
 

Excel-lent

XLDnaute Barbatruc
Re : Critères de selection dans une variable

Salut Chrisdu73,

Avec un peu de recherche tu serais tombé par exemple sur ce sujet.

Puis de fil en aiguille, après quelques tests tu aurais obtenu le code suivant :

Sub Macro1()
Dim FichierDorigine As Workbook 'déclare la variable cs (Classeur Source)
Dim FichierDestinataire As Workbook 'déclare la variable cc (Classeur Cible)

Set FichierDorigine = Workbooks("Test1.xls")
Set FichierDestinataire = Workbooks("Classeur2.xls")

FichierDestinataire.Sheets("Feuil1").Range("C5") = FichierDorigine.Sheets("Feuil1").Range("A1")

End Sub

Testé, ça fonctionne. Dans mon cas, les deux fichiers étaient dans le même répertoire, mais ce n'est pas grave, il te suffit de rajouter le chemin.

Suite à quoi il te suffit de rajouter une boucle pour traiter ce point :
Chrisdu73 à dit:
mes critères sont en colonne de C2 à C20

Après, reste à savoir comment tu veux les mettre dans ta variable? A la suite? Disposé sous forme de liste? ...?

Dernière étape :
remplacer FichierDestinataire.Sheets("Feuil1").Range("C5") par une variable (sans oublier de la nommer au début de la macro.

Ce qui donnerais :
Sub Macro1()
Dim FichierDorigine As Workbook 'déclare la variable cs (Classeur Source)
Dim Variable2, Variable3, Variable4, Variable5, Variable6, Variable7, Variable8, Variable9, Variable10 as string
Dim Variable11, Variable12, Variable13, Variable14, Variable15, Variable16, Variable17, Variable18, Variable19, Variable20 as string
Set FichierDorigine = Workbooks("Test1.xls")

For i = 2 To 20
Variable & i = FichierDorigine.Sheets("Feuil1").Range("C" & i)
Next i

End Sub

Il te reste plus qu'à le personnaliser encore un petit peu et le tour est joué ;)
Sans oublier de le tester au fur et à mesure, ainsi tu vois plus facilement d'où vient le bug et tu comprend mieux ce que tu fais et les répercussions que cela produit.

Bonne après midi

Edition : salut Verba_Tim
 
Dernière édition:

chrisdu73

XLDnaute Occasionnel
Re : Critères de selection dans une variable

Excelent, (plutôt rapide), merci pour ton aide, en plus bien commenté, je vais tester cela se soir et je te tiens au courant.
merci beaucoup.

Chris


Ps: motard également en Suzuki en GSR750
 
Dernière édition:

chrisdu73

XLDnaute Occasionnel
Re : Critères de selection dans une variable

En faite le code au début du post fonctionne, mais j'aurai voulu les mettre dans un autre fichier (C:\parametrage.xls).

De façon à modifier uniquement le fichier paramétrage (C:\parametrage.xls) Feuil1! (C2:C20)

si il y avait moyen de déclarer ces critères dans une variable ?
 

Excel-lent

XLDnaute Barbatruc
Re : Critères de selection dans une variable

Salut ChrisDu73,

Avant aujourd'hui je ne connaissais rien à la gestion des fichiers excel via le VBA. Je m'arrangeais toujours pour tout mettre dans le même fichier.

Pour pouvoir te répondre, j'ai donc dû apprendre tout ça, faire des dizaines de tests avant de trouver la réponse à ton problème, d'où un temps de réponse plutôt long. Ce qui m'a permit également de trouver une réponse beaucoup plus compact pour définir les 19 variable :)

VB:
Sub Macro1()
' Macro à placer dans le fichier où se trouve tes filtres

Dim MaVariableC(2 To 20) As String
Dim i As Byte
Dim CheminDuFichierEtSonNom As Workbook

'ouvrir le fichier qui contient les variables qui seront utiliser plus tard
'pour les filtres automatique

Set CheminDuFichierEtSonNom = Workbooks.Open("C:\mon répertoire\paramétrage.xls")

' Mettre dans la variable :
' -> MaVariableC2 la valeur en C2
' -> MaVariableC3 la valeur en C3
' -> ...
' -> MaVariableC20 la valeur en C20

For i = 2 To 20
    MaVariableC(i) = Workbooks("Fichier d'origine.xls").Sheets("Feuil1").Range("C" & i)
Next i

' Lorsque tu veux travailler sur ton fichier où figure les filtres,
' ne pas oublier de le préciser ainsi :
' Workbooks("Nom de ton fichier.xls").Sheets("Nom de ta feuille").Range("Réf de ta cellule")

'Endroit où placer ton code gérant tes filtres automatiques ;)

End Sub

Bonne fin d'après midi

PS. : alors, elle est comment cette nouvelle GSR750? Elle vaut sa concurrente, la Z750? Tu as changé le pot d'échappement d'origine pour un beaucoup moins volumineux?
 
Dernière édition:

Discussions similaires

Réponses
38
Affichages
4 K