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 :

Boucler sur les feuilles d'un classeur pour en sortir les rapports [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Compagnon, Assistant RI, Chef d'equipe
    Inscrit en
    Novembre 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Compagnon, Assistant RI, Chef d'equipe
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2016
    Messages : 26
    Par défaut Boucler sur les feuilles d'un classeur pour en sortir les rapports
    Bonjour à tous,

    En fait ma demande va être simple pour tous sauf moi, voici mon souhait :

    J'ai un classeur composé de plusieurs feuille correspondant aux atelier (chacune contenant un tableau "Base de données" de ces ateliers), chaque ligne correspondent quant à elle à une fiche de défaut.

    Je possède un code permettant de mettre en rapport chaque ligne de ce tableau mais ce que je voudrais, c'est choisir via une listbox l'atelier concerné et sortir les rapport de cet atelier, j'ai créer l'userform comme suit :

    un contrôle listbox et 2 boutons, 1 valider et 1 annuler

    Auriez vous un bout de code me permettant de réaliser ceci ?

    Merci a tous pour votre aide

    chrisdu86

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    voila de quoi remplir la liste des ateliers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        'liste de tous les onglet
        ObjetListe.Clear
        For i = 1 To Sheets.Count
             ObjetListe.AddItem (Sheets(i).Name)
        Next
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    suggestion récurrente du père Joe : pourquoi une feuille par atelier ?

    Si tu ajoutes une colonnes qui portera le nom de ton atelier, tu peux rassembler toutes tes feuilles en une seule.

    Et là, tu te simplifies grandement la vie, puisque choisir un atelier revient grosso modo à faire un filtrage (automatique ou avancé) sur une unique feuille

  4. #4
    Membre averti
    Homme Profil pro
    Compagnon, Assistant RI, Chef d'equipe
    Inscrit en
    Novembre 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Compagnon, Assistant RI, Chef d'equipe
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2016
    Messages : 26
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    suggestion récurrente du père Joe : pourquoi une feuille par atelier ?

    Si tu ajoutes une colonnes qui portera le nom de ton atelier, tu peux rassembler toutes tes feuilles en une seule.

    Et là, tu te simplifies grandement la vie, puisque choisir un atelier revient grosso modo à faire un filtrage (automatique ou avancé) sur une unique feuille
    Bonjour,

    A cette heure, le classeur est composé d'une feuille par atelier sur demande du client, on ne peut donc pas changer, c'est sur que cela aurait été certainement plus simple

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Alors,

    regarde bien ta ligne 18 : la boucle commence à quelle valeur ?

    ensuite, regarde ta ligne 22 : que va-t-il se passer si ton premier élément de ListBox est sélectionné ? Le code va faire référence à la feuille numéro combien ? Et la ligne numéro combien ?

    Déjà rien que ça ne permet pas d'aller plus loin dans l'étude de ton code, c'est une erreur totalement rédhibitoire

  6. #6
    Membre averti
    Homme Profil pro
    Compagnon, Assistant RI, Chef d'equipe
    Inscrit en
    Novembre 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Compagnon, Assistant RI, Chef d'equipe
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2016
    Messages : 26
    Par défaut
    Si je comprend bien, la boucle commence à la valeur i, je sélectionne une feuille ? cependant ma BDD commence elle à la ligne 2

    La référence de la feuille est en fonction de ma sélection dans la listbox

    J'ai du mal avec ça, cela à pourtant l'air simple, le souhait étant sélectionner l'atelier, et créer toutes les fiches de cette atelier a partir de la ligne 2, grrrr...

    Merci de me faire chercher c'est un bon moyen d'apprendre et de trouver ces erreurs...

  7. #7
    Membre averti
    Homme Profil pro
    Compagnon, Assistant RI, Chef d'equipe
    Inscrit en
    Novembre 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Compagnon, Assistant RI, Chef d'equipe
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2016
    Messages : 26
    Par défaut
    Bon je doit être vraiment mauvais,

    La boucle commence à 0, quand mon premier élément de la listbox est sélectionné il fait référence à la feuille 0 ! et pour la ligne ? je ne sais pas ce code m'a tout simplement l'air faux

    et pourtant lorsque j'écris ceci :

    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
    Private Sub CommandButton1_Click()
    Dim BDD As Workbook                                         'Correspond au classeur sources (bdd fiches)
    Dim rapport As Workbook                                     'Correspond a la trame des rapports
    Dim rep As String                                           'Variable du dossier racine (user)
    Dim classeurpath As String                                  'Variable definissant le chemin des classeurs
    Dim classeurphoto As String                                 'Variable definissant le chemin des photos
    Dim nfiche As Integer
    Dim i
        rep = Environ("USERPROFILE") & "\"
        classeurpath = rep & "Documents\EIPinspection-final\RAPPORTS\rapfinal_C.xlsm"
        classeurphoto = rep & "Documents\EIPinspection-final\PHOTOS"
     
    Set BDD = ThisWorkbook
    Set rapport = Workbooks.Open(classeurpath)
    nbToGo = ListBox1.ListCount
     
            For i = 0 To ListBox1.ListCount - 1
     
                If ListBox1.Selected(i) = True Then MsgBox ListBox1.List(i)     ' il me renvoi bien l'atelier en question donc i c'est la feuille ?
     
     
     
                    'nfiche = BDD.Worksheets(i).Range("BN" & i + 2)               ' et la je fais n'importe quoi car si i correspond à la feuille ce n'est effectivement pas une ligne !!!
                    'rapport.Worksheets("R117C").Copy Before:=rapport.Worksheets("R117C")
                    'ActiveSheet.Name = nfiche
     
     
     
                'End With
     
                 'End If
     
     
     
                Next i
     
    End Sub
    j'ai commenté mais je ne comprend pas comment je devrais écrire ce code... grrr
    je manque de logique surement

    Merci

  8. #8
    Membre averti
    Homme Profil pro
    Compagnon, Assistant RI, Chef d'equipe
    Inscrit en
    Novembre 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Compagnon, Assistant RI, Chef d'equipe
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2016
    Messages : 26
    Par défaut
    Bonjour mjpmjp,

    Merci pour ta réponse, j'avais trouvé un truc similaire que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Initialize()
    Dim i As Byte
    For i = 1 To Sheets.Count
        Me.ListBox1.AddItem Sheets(i).Name
    Next i
     
    End Sub
    Cela fonctionne aussi , cependant maintenant il va falloir que je lui dise qu'à la sélection de l'item dans la listbox il me sorte les rapports, je cherche et reviens en cas de problème (hors de question de me mâcher le travail)

    Merci encore

  9. #9
    Membre averti
    Homme Profil pro
    Compagnon, Assistant RI, Chef d'equipe
    Inscrit en
    Novembre 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Compagnon, Assistant RI, Chef d'equipe
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2016
    Messages : 26
    Par défaut
    Re,

    Bon beh je reviens

    Alors je suis maintenant à l'étape de création des fiches mais le code que j'ai écris ne remplis pas son rôle (j'essaie d'apprendre )

    Voici le code en question :

    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
    Private Sub CommandButton1_Click()
    Dim BDD As Workbook                                         'Correspond au classeur sources (bdd fiches)
    Dim rapport As Workbook                                     'Correspond a la trame des rapports
    Dim rep As String                                           'Variable du dossier racine (user)
    Dim classeurpath As String                                  'Variable definissant le chemin des classeurs
    Dim classeurphoto As String                                 'Variable definissant le chemin des photos
    Dim nfiche As Integer
     
     
        rep = Environ("USERPROFILE") & "\"
        classeurpath = rep & "Documents\EIPinspection-final\RAPPORTS\rapfinal_C.xlsm"
        classeurphoto = rep & "Documents\EIPinspection\PHOTOS"
     
    Set BDD = ThisWorkbook
    Set rapport = Workbooks.Open(classeurpath)
    nbToGo = ListBox1.ListCount
     
            For i = 0 To nbToGo - 1
    'Application.ScreenUpdating = False
                'If ListBox1.Selected(i) = True Then
                If ListBox1.Selected(i) Then
                    nfiche = BDD.Worksheets(i).Range("BN" & i)                                               'Alors ici je voudrais qu'il nomme la feuille en fonction de la valeur stocker dans la colonne BN de la feuille selectionné (atelier)
                    rapport.Worksheets("R117C").Copy Before:=rapport.Worksheets("R117C")
                    ActiveSheet.Name = nfiche
     
     
                End If
     
     
                Next
     
    End Sub
    et resultat... la feuille s'appel 0, une idée ?

    Merci à tous

    chrisdu86

  10. #10
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par chrisdu86 Voir le message
    une idée ?

    Une réponse ?
    ==> #3

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

Discussions similaires

  1. [XL-2013] combobox pour choisir les feuilles d'un classeur
    Par LALANDE Melchior dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/06/2016, 20h46
  2. [XL-2003] Boucle For sur toutes les feuilles d'un classeur
    Par dlight dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/10/2010, 22h48
  3. [VBA]activer les feuilles d'un classeur Excel
    Par jemigo dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/01/2006, 17h58
  4. Action sur toutes les feuilles d'un classeur
    Par beurnoir dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 23/12/2005, 15h11
  5. [VBA-E] Ordonner les feuilles d'un classeur
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/12/2005, 16h49

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