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 :

remplacer 265 dans Evaluate ("row(1:265)") par une variable j


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    technicien
    Inscrit en
    Février 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Février 2017
    Messages : 82
    Par défaut remplacer 265 dans Evaluate ("row(1:265)") par une variable j
    Bonjour je ne trouve pas la syntaxe pour modifier la valeur 265 par une variable j qui dépend de mon analyse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Copie").Sheets("Feuil1").Range("A5:G" & j).Value = Application.Index(test, Evaluate("Row(1:265)"), [{1,2,10,4,5,6,9}])
    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Copie").Sheets("Feuil1").Range("A5:G" & j).Value = Application.Index(test, Evaluate("Row(1:" & j &")"), [{1,2,10,4,5,6,9}])
    mais non

    Merci par avance.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    la syntaxe est bonne mais certainement pas l'analyse de la variable j

    Si la plage va de "A5" (ligne 5 donc) jusqu'à "G" & j,   j valant 265,   cela fait donc combien de lignes ?

    Certainement pas 265 comme dans "ROW(1:" & j & ")" !

    Et faut-il encore que test soit une variable tableau comportant au moins 265 lignes …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Application.Index c'est pas simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    j = 265
    adresse = "row(1:" & j & ")"
    lignes = Application.Evaluate(adresse)
    cols = Array(1, 2, 10, 4, 5, 6, 7)
    a_sp = Application.Index(a_sn, lignes, cols)
    Cells(9, 1).Resize(UBound(a_sp), UBound(a_sp, 2)) = a_sp

  4. #4
    Membre confirmé
    Homme Profil pro
    technicien
    Inscrit en
    Février 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Février 2017
    Messages : 82
    Par défaut
    Bonjour à vous.

    Bon je ne comprends pas, hier le code ne fonctionnait pas et me donnait une erreur de syntaxe (ligne écrite en rouge) et ce matin je fais le copier coller de la ligne et ça marche .

    J'ai bien entendu corriger le A5:Gj et le "ROW(1:" & j & ")" grâce à la remarque de Marc-L. Effectivement 4 lignes de données disparaissaient....

    Un grand merci à Marc-L (test est bien une variable tableau de 265 lignes dans le cadre de mon exemple)

    En aparté j'ai vu un message sur la possibilité travailler dans un fichier sans l'ouvrir. Vu que le traitement que j'effectue avec ce développement est appelé à ouvrir un par un beaucoup de fichiers Excel, le traiter puis le fermer. Ce type d'approche fait il gagner du temps sur l’exécution de la tâche? Ou s'est juste pour la beauté du geste....

    Merci aussi à Docmarti de s'être lui aussi intéressé à mon problème. Effectivement application.index, n'est pas simple et j'avoue que c'est bien sur une technique de Marc-L et Jacques Boisgontier et Pierre Fauconnier(sur un autre de mes posts) qui sont à l'origine de la genèse de cette ligne de code.


    Cordialement.

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Pour accéder aux données de classeurs sans les ouvrir via ADODB,
    ce n'est pas pour la beauté du geste surtout si les classeurs mettent du temps à s'ouvrir dans Excel,
    donc gain de temps et intéressant si les classeurs ont la même structure …

  6. #6
    Membre confirmé
    Homme Profil pro
    technicien
    Inscrit en
    Février 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Février 2017
    Messages : 82
    Par défaut
    Ok,
    dans le cadre de cette exploitation les classeurs s'ouvrent très vite (pratiquement instantanément) donc ça ne devrait pas être nécessaire.
    Mais je garde cette option pour d'autres fichiers beaucoup plus lourds.


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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/03/2011, 19h35
  2. Réponses: 0
    Dernier message: 22/06/2010, 16h53
  3. Réponses: 13
    Dernier message: 01/09/2007, 21h49
  4. Réponses: 4
    Dernier message: 10/03/2007, 03h29
  5. Réponses: 3
    Dernier message: 11/12/2005, 12h15

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