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 :

Récupérer des informations dynamiquement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Par défaut Récupérer des informations dynamiquement
    Bonjour,

    J'ai dans fichier un certain nombre d'onglets qui se créent au fur et à mesure de ma macro. Les noms de ces onglets sont récupérés dans une première feuille et stockés dans un tableau dynamique (merci SilkyRoad pour le tutoriel sur les tableaux). Je voudrais que dans l'onglet que je viens juste de créer, il me récupère (copie) les valeurs présentes dans l'onglet dont le nom est le premier de mon tableau de noms.

    Pour être plus clair voici mon 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Dim nbIndiv As Integer
        Dim TabIndiv() As String
            
        'Initialisation
        nbIndiv = 0
        
        'Recherche du nombre de personnes
        Sheets("Données a rajouter").Select
        Range("A1").Select
        While ActiveCell.Value <> 0
            nbIndiv = nbIndiv + 1
            ReDim Preserve TabIndiv(nbIndiv)
            TabIndiv(nbIndiv) = ActiveCell.Value
            ActiveCell.Offset(5, 0).Select
        Wend
        
        For i = 1 To nbIndiv
            MsgBox ("Onglet " & i & " = " & TabIndiv(i))
            If existFeuille(TabIndiv(i)) Then
                Sheets(TabIndiv(i)).Select
                Range("A2").Select
                Selection.End(xlDown).Select
                ActiveCell.Offset(1, 0).Select
                ActiveCell.FormulaLocal = ActiveCell.Offset(-1, 0) + 7
            Else
                Sheets.Add After:=Worksheets(Worksheets.Count)
                Sheets(Worksheets.Count).Name = TabIndiv(i)
                Range("B1").Select
                ActiveCell.FormulaR1C1 = "=TabIndiv(1)!RC" <== Ici ce que j'ai essayé mais qui ne marche pas
                Range("B1").Select
                Selection.AutoFill Destination:=Range("B1:F1"), Type:=xlFillDefault
                Range("A2").Select
                ActiveCell.FormulaR1C1 = "=TabIndiv(1)!RC"
            End If
            
        Next
    End Sub
    
    Function existFeuille(nomFeuille) As Boolean
        existFeuille = True
        On Error GoTo fin:
            a = Sheets(nomFeuille).Name
        Exit Function
    fin:     existFeuille = False
    End Function

    PS : si vous voyez des aberrations ou des détails pas très clean dans ce code, n'hésitez pas à m'en faire part, je suis preneur de toute critique sur celui-ci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Abérations ? Nom mais une méthode pour ne pas avoir à sélectionner la feuille ni les cellules...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim FL1 As Worksheet
        Set FL1 = Worksheets("Données a rajouter")
        DerLigne = FL1.Range("A65536").End(xlUp).Row
        For i = 1 To DerLigne Step 5
            nbIndiv = nbIndiv + 1
            ReDim Preserve TabIndiv(nbIndiv)
            TabIndiv(nbIndiv) = FL1.Cells(i, 1).Value
        Next
    ... si le tableau concerne bien la valeur trouvée toutes les 5 lignes à partir de la ligne 1 (1, 6, 11, 16... etc)
    Mais l'essentiel pour toi est de comprendre ton code et que ça fonctionne

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Par défaut
    Merci pour cette réponse !
    Oui l'essentiel est de comprendre son propre code, mais bon, quand on peut l'améliorer (en le comprenant toujours bien sûr) c'est encore mieux

    J'ai bien saisi la manoeuvre ici, donc je vais pouvoir incorporer ça dans mon code, et ça pourra me servir par la suite ! Merci beaucoup !

    Pas d'idées pour mon "problème" principal sinon ?

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Par défaut
    Rebonjour,

    Bon je tourne en rond et je m'aperçois que j'ai très mal expliqué mon problème, je vais essayer d'être plus clair cette fois-ci !

    En fait je voudrais faire un calcul (avec une formule) qui aille chercher des données contenues dans une feuille dont le nom n'est pas connu a priori, mais contenu dans un tableau de noms.

    Admettons que mon tableau de noms appelé tab_noms contienne les noms suivants :
    maFeuille1
    maFeuille2

    Si le nom de la feuille était fixe j'utiliserais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "='maFeuille1'!RC"
    mais là il me faudrait une sorte de formule comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=tab_noms(1)!RC"
    J'espère avoir été plus clair

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ah ! C'était ça !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=" & tab_noms(1) & "!RC"
    @+

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Par défaut
    Oui Comme quoi une mauvaise explication ça pardonne pas

    Merci pour la réponse, je suis un peu choqué car j'aurais pu, que dis-je, dû ! y penser.

    Bon avec ça et le Cells.Value qui m'a été bien utile pour la suite de mon programme, j'suis paré je devrais pas revenir avant un moment !

    Merci encore

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

Discussions similaires

  1. Récupérer des informations sur les connexions réseau
    Par Leobaillard dans le forum Delphi
    Réponses: 8
    Dernier message: 31/08/2006, 01h20
  2. Récupérer des informations (JVCL)
    Par cat1982 dans le forum Delphi
    Réponses: 2
    Dernier message: 15/05/2006, 12h00
  3. Récupérer des informations sur le matériel
    Par RaphAstronome dans le forum Windows
    Réponses: 5
    Dernier message: 31/03/2006, 15h32
  4. Récupérer des Informations sur un PC via un Réseau ?
    Par MaTHieU_ dans le forum Administration
    Réponses: 6
    Dernier message: 22/11/2005, 12h39
  5. Réponses: 6
    Dernier message: 28/09/2003, 17h49

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