IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

definir un champ comme variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut definir un champ comme variable
    Bonjour

    Je tourne en rond autour de quelques lignes ... .

    Pour automatiser des filtres avancés, je cherche à mettre en variable la zone de critère et la zone d'extraction. Ma base de données est nommée (base_globale).
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sub truc()
      dir_crit = "w1:w2"
      dir_dest = "w3"
      call extraction
    .... 'il y aura plusieurs blocs
    end sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub extraction ()
    Range("base_globale").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            dir_crit, CopyToRange:=dir_dest, Unique:=False
    end sub
    Je pense qu'il y a un pb de declaration de variable, j'ai testé plein de trucs sans aboutir ... .

    En fait, outre ce pb de champ en variable, je souhaitais automatiser (dans une boucle) le contenu de dir_crit et dir_dest mais apparement le format L1C1 n'est pas reconnu en VBA et je ne sais pas comment incrémenter la référence colonne d'un nombre constant (les lignes sont fixes).

    Merci de m'éclairer

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    as tu essayé de déclarer dir_crit en range?


  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Oui, j'ai fais un Dim dir_crit as Range
    Mais lorsque je passe les valeurs j'ai une erreur d'éxécution.
    Mes essais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim dir_crit as range
     
    dir_crit = range("w1:w2")
    ... le debogueur s'arrete dessus, avec popup demandant une valeur à l'expression ou ")"
    ... là c'est la routine extraction qui ne valide pas le champ.

    Voilà .. et plein de choses testées encore

    Par contre, pour le positionnement ligne / colonne, un post tout chaud m'apporte des éléments de réponse

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    est ce que la portée de la variable va dans la procedure extraction?
    Que vaut dir_crit dans extraction?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Alors là j'avoue que je ne saurai répondre ... .
    Je ne sais pas comment récupérer la valeur ou connaitre sa portée, le pas à pas me retourne des messages d'erreurs mais pas d'indication précise.

    .. j'édite : tu penses que je devrai envoyer vers estraction avec paramètres ?

    Genre ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    call extraction(dir_crit,dir_dest)
    sub extraction (dir_crit,dir_dest)
    ?

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    En gros, si tu déclaré la variable dir_crit en dim dans un feuille, et que la sub extraction n'est pas dans cette feuille, la variable n'a pas une portée sufisante. Il faut alors la déclaré en Public au lieu de dim

    Pour connaitre la valeur d'une variable lors de l'exécution, met un point d'arret sur la ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("base_globale").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            dir_crit, CopyToRange:=dir_dest, Unique:=False
    puis clic droit sur ta variable et choisi Ajouter un espion

    Losque tu executeras ton code, il s'arretera au point d'arret et tu auras dans la fenetre espion, la valeur de ta variable

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/08/2011, 20h03
  2. Clause sur multiples champs 1 variable
    Par hugo69 dans le forum Débuter
    Réponses: 1
    Dernier message: 06/10/2006, 17h10
  3. Réponses: 2
    Dernier message: 26/07/2006, 14h52
  4. Insert avc comme variable le nouvel id cree
    Par escafr dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/11/2005, 19h32
  5. [VB6] [Datareport] définir un champ
    Par ckankonvahou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/10/2002, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo