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 :

problème indice tableau


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2022
    Messages : 2
    Par défaut problème indice tableau
    Bonjour les gens,

    Voila ma situation !
    J'ai besoin d'utiliser Excel afin de comparer différents résultats concernant un type de produit, et ce, d'une année à l'autre.
    C'est traité manuellement et je souhaitais découvrir les macro disponibles sous Excel avec cette occasion !

    J'ai touché un peu en programmation ( Python & C++) mais il y a plus de 10ans, ça passe ...

    contexte :
    Mes mesures sont dans deux fichiers Excel avec 1 feuille pour chaque produit
    Je souhaite récupérer des valeurs ( une formule) dans un troisième fichier qui va synthétiser le tout annuellement.
    Je débute en VBA, il y a surement des erreurs ( optimisations). Attention les yeux !

    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Sub Module1()         'ce module sert à sélectionner les fichiers de mesure de l'année n & n-1 manuellement et de l'ouvrir
     
    Dim Cls_Anciennes_Mesures   As Workbook
    Dim Cls_Nouvelles_Mesures   As Workbook
    Dim Cls                     As Workbook
     
    Set Cls = ActiveWorkbook
     
    '/////Ouverture de l'ancien fichier de mesure/////
    CreateObject("WScript.Shell").Popup ("Selectionner le fichier de mesure de l'an dernier"), 3
    Anciennes_Mesures = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xls")
    If Anciennes_Mesures <> False Then
        Workbooks.Open Filename:=Anciennes_Mesures
    End If
    Set Cls_Anciennes_Mesures = Workbooks.Open(Anciennes_Mesures)
     
    '/////Ouverture du nouveau fichier de mesure/////
    CreateObject("WScript.Shell").Popup ("Selectionner le fichier de mesure de cette année"), 3
    Nouvelles_Mesures = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xls")
    If Nouvelles_Mesures <> False Then
        Workbooks.Open Filename:=Nouvelles_Mesures
    End If
    Set Cls_Nouvelles_Mesures = Workbooks.Open(Nouvelles_Mesures)
     
    End Sub
    Pas de soucis avec lui et ça marche assez bien pour un premier jet ! Mon probleme arrive ...

    J'ai 25 équipements différents. j'ai commencé à rédiger mes lignes comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks("20220530.xlsx").Sheets("Appareil_1").Range("A16:A216").Copy Destination:=Workbooks("synthese.xlsm").Sheets("Appareil_1").Range("A3:A203")
    et cela pour les 25. J'ai souvenir de la notion de tableau et de pointeur. Comment puis-je écrire mon choix de feuille avec celui ci si c'est réalisable ? dans le genre .Sheets(tableau(*i)). Je souhaite créer un tableau qui liste ces différents modèles et une boucle for pour exécuter la commande de manière 'générique'

    Question bonus !
    Comment faites vous pour copier le résultat d'une formule sur un autre fichier Excel ? j'ai rédigé celui ci mais je pense que ça va me sauter au visage sous peu ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /////Copie des résultats onglet Appareil_1/////
     
        Windows("20220530.xlsx").Activate
        Sheets("Appareil_1").Select
        Range("D16:D216").Select
        Selection.Copy
        Windows("synthese.xlsm").Activate
        Sheets("Appareil_1").Activate
        Range("B3:B203").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    J'avoue ne pas être encore à l'aise avec la notion de page parente et le .select, je continue à travailler cela !

    Merci si une âme charitable se penche sur mon petit projet personnel !

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 587
    Par défaut
    Bonjour

    Si tes données sont sous forme de listes, PowerQuery, intégré à Excel, serait sans doute lus simple et efficace que du VBA dont il faut bannir Select et Activate...

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

Discussions similaires

  1. Problème de tableau avec un indice hors de la sélection
    Par jeanfly dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 17/04/2019, 16h19
  2. problème d'indice tableau
    Par exe2bin dans le forum Débuter
    Réponses: 5
    Dernier message: 16/08/2017, 10h40
  3. Problème limite d'indice tableau
    Par Thyyb dans le forum VB.NET
    Réponses: 12
    Dernier message: 11/12/2013, 16h47
  4. [Débutant] problème de tableau et d'indice
    Par pompier21 dans le forum Interfaces Graphiques
    Réponses: 24
    Dernier message: 07/01/2009, 21h02
  5. Problème de tableau
    Par krfa1 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/02/2005, 12h09

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