XL 2013 demande d'aide

Marcus_341

XLDnaute Nouveau
bonjour tout le monde ne sachant pas comment poser ma question je vais vous copier le code ici
mon probleme c'est que cela ne saute qu'une feuilles sur deux des matrices



merci
ma présentation: https://excel-downloads.com/threads/marcus-_341.20074045/




VB:
' Code à mettre dans feuille liste
' Génére une liste pour recup d'info ...
Sub Worksheet_Activate()
    Dim sh As Worksheet
    Dim shListe As Worksheet
    Dim shModele As Worksheet
 
    Dim ilg As Integer 'ligne ou écrire
    ilg = 10 ' On commence sur la ligne 10
    Set shListe = ThisWorkbook.Sheets("RECAPITULATIF") '  feuille qui récap les informations
   
    Set shModele = ThisWorkbook.Sheets("Matrice_2")  'Feuille a ne rien faire lorsque c'est son tour
    Set shModele = ThisWorkbook.Sheets("Matrice_1") 'Feuille a ne rien faire lorsque c'est son tour
   
    For Each sh In ThisWorkbook.Worksheets 'Boucle sur toutes les feuilles presente du classeur quelque soit le nombre
        If sh.Name <> shListe.Name And sh.Name <> shModele.Name Then '"Saute" les feuilles modéle matrice
            shListe.Cells(ilg, 1) = sh.Name
            shListe.Cells(ilg, 2) = sh.Range("a1")
            shListe.Cells(ilg, 3) = sh.Range("a2")
            shListe.Cells(ilg, 4) = sh.Range("a3")
            shListe.Cells(ilg, 5) = sh.Range("a4")
            shListe.Cells(ilg, 6) = sh.Range("a5")
            shListe.Cells(ilg, 7) = sh.Range("a6")
            shListe.Cells(ilg, 8) = sh.Range("a7")
            shListe.Cells(ilg, 9) = sh.Range("A8")
            shListe.Cells(ilg, 10) = sh.Range("A9")
            shListe.Cells(ilg, 11) = sh.Range("A10")
            shListe.Cells(ilg, 12) = sh.Range("a11")
            shListe.Cells(ilg, 13) = sh.Range("a12")
            shListe.Cells(ilg, 14) = sh.Range("a13")
            ilg = ilg + 1
        End If
    Next
End Sub
 

JM27

XLDnaute Barbatruc
bonjour
l'erreur est la
Set shModele = ThisWorkbook.Sheets("Matrice_2") 'Feuille a ne rien faire lorsque c'est son tour
Set shModele = ThisWorkbook.Sheets("Matrice_1") 'Feuille a ne rien faire lorsque c'est son tour

Set shModele = ThisWorkbook.Sheets("Matrice_1") 'Feuille a ne rien faire lorsque c'est son tour
A remplacer par
Set shListe= ThisWorkbook.Sheets("Matrice_1")
 

Marcus_341

XLDnaute Nouveau
salut JM et merci
avec votre solution cela rentre les information récupéré sur la feuilles du classeur "matrice_1"
les matrices 1 et 2 sont des mises en page "type" , la feuille récapitulatif doit être la seul a regrouper les infos
merci pour votre aide.
forum.PNG
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Essayez comme ça :
VB:
Sub Worksheet_Activate()
   Dim L As Long, Wsh As Worksheet
   L = 9 ' On commence sur la ligne 10
   For Each Wsh In ThisWorkbook.Worksheets 'Boucle sur toutes les feuilles presente du classeur quelque soit le nombre
      If Not (Wsh.Name Like "Matrice_*" Or Wsh.Name = Me.Name) Then
         L = L + 1
         Me.Cells(L, "A").Value = Wsh.Name
         Me.Cells(L, "B").Resize(, 13).Value = WorksheetFunction.Transpose(Wsh.[A1:A13].Value)
         End If
      Next Wsh
   End Sub
 

Marcus_341

XLDnaute Nouveau
@Dranreb merci pour le code , mais ce dernier signal une erreur (voir image)
je vous laisse a dispos celui que j'utilise car j'ai vraiment besoin de récupéré des informations dans différente cellule de mon tableur.
si il n'y a aucune solution , vous cassez pas la tete, j'utiliserai deux classeur .
excel.PNG


VB:
' Code à mettre dans feuille liste
' Génére liste  est mise à jour des compteurs ...
Sub Worksheet_Activate()
    Dim sh As Worksheet
    Dim shListe As Worksheet
    Dim shModele As Worksheet
    Dim L As Long, Wsh As Worksheet 'test
 
    Dim ilg As Integer 'ligne ou écrire
    ilg = 10 ' On commence sur la ligne 10
    Set shListe = ThisWorkbook.Sheets("RECAPITULATIF") ' Variable pointant sur feuille destination de la liste
    
    Set shModele = ThisWorkbook.Sheets("Matrice_source")  'Feuille a ne rien faire lorsque c'est son tour
    'Set shModele = ThisWorkbook.Sheets "Matrice_scol" Or "Matrice_source")  'Feuille a ne rien faire lorsque c'est son tour
    
    For Each sh In ThisWorkbook.Worksheets 'Boucle sur toutes les feilles du classeur
        If sh.Name <> shListe.Name And sh.Name <> shModele.Name Then '"Saute" les feuilles modéle et lise
      
            shListe.Cells(ilg, 1) = sh.Name
            shListe.Cells(ilg, 2) = sh.Range("d33")
            shListe.Cells(ilg, 3) = sh.Range("i33")
            shListe.Cells(ilg, 4) = sh.Range("N33")
            shListe.Cells(ilg, 5) = sh.Range("S33")
            shListe.Cells(ilg, 6) = sh.Range("X33")
            shListe.Cells(ilg, 7) = sh.Range("AC33")
            shListe.Cells(ilg, 8) = sh.Range("AH33")
            shListe.Cells(ilg, 9) = sh.Range("AM33")
            shListe.Cells(ilg, 10) = sh.Range("AR33")
            shListe.Cells(ilg, 11) = sh.Range("AW33")
            shListe.Cells(ilg, 12) = sh.Range("BB33")
            shListe.Cells(ilg, 13) = sh.Range("BG33")
            shListe.Cells(ilg, 14) = sh.Range("BK33")
            ilg = ilg + 1
        End If
    Next
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Me ne doit pas être utilisé dans un module standard, seulement dans un module objet.
Et une Private Sub Worksheet_Activate, n'est pas considérée comme une procédure de prise en charge d'activation d'une feuille dans un module standard, mais seulement dans le module de l'objet Worksheet qui représente la feuille activée, et où Me y représente cet objet.
 
Dernière édition:

Marcus_341

XLDnaute Nouveau
Bonjour.
Me ne doit pas être utilisé dans un module standard, seulement dans un module objet.
Et une Private Sub Worksheet_Activate, n'est pas considérée comme une procédure de prise en charge d'activation d'une feuille dans un module standard, mais seulement dans le module de l'objet Worksheet qui représente la feuille activée, et où Me y représente cet objet.
:confused: je suis vraiment désoler mais j'ai vraiment pas le niveau je vais prendre le temps d'expliqué si j'ai bien compris en plus d’être une huitre en anglais 😅(il comprend vite mais lui faut du temps )😅

dans l’éditeur Visual basic:
le module objet, semble être le dossier mircosoft excel objet (qui contient Feuil1, 2, 3 ,4)
le module standard = dossier "Modules"
excl1.PNG


donc le code parle de ME= la feuil1"recapitulatif"

j'ai donc coller le code dans la feuille "recap" et ce dernier fonctionne et ce sans avoir besoin de cliquer sur mon bouton mise a jour 😍
je peut donc alléger l’ergonomie du tableur et poids du doc c'est super !

je vais chercher pour ciblé les bonnes cellule dans le code car A1:A13 , si je ne trouve pas je pourrais te solliciter ?
 

Marcus_341

XLDnaute Nouveau
Dranreb merci le code ma bien rendu service 😜

j'ai fait comme cela et c'est nikel encore merci 🤓
VB:
         L = L + 1
         Me.Cells(L, "A").Value = Wsh.Name
         Me.Cells(L, "B").Value = WorksheetFunction.Transpose(Wsh.[D33].Value)
         Me.Cells(L, "c").Value = WorksheetFunction.Transpose(Wsh.[i33].Value)
         Me.Cells(L, "d").Value = WorksheetFunction.Transpose(Wsh.[n33].Value)
         Me.Cells(L, "e").Value = WorksheetFunction.Transpose(Wsh.[s33].Value)
         Me.Cells(L, "f").Value = WorksheetFunction.Transpose(Wsh.[x33].Value)
         Me.Cells(L, "g").Value = WorksheetFunction.Transpose(Wsh.[ac33].Value)
         Me.Cells(L, "h").Value = WorksheetFunction.Transpose(Wsh.[ah33].Value)
         Me.Cells(L, "i").Value = WorksheetFunction.Transpose(Wsh.[am33].Value)
         Me.Cells(L, "j").Value = WorksheetFunction.Transpose(Wsh.[ar33].Value)
         Me.Cells(L, "k").Value = WorksheetFunction.Transpose(Wsh.[aw33].Value)
         Me.Cells(L, "l").Value = WorksheetFunction.Transpose(Wsh.[bb33].Value)
         Me.Cells(L, "m").Value = WorksheetFunction.Transpose(Wsh.[bg33].Value)
         Me.Cells(L, "n").Value = WorksheetFunction.Transpose(Wsh.[bk33].Value)
 

Dranreb

XLDnaute Barbatruc
WorksheetFunction.Transpose n'est pas utile là !
Je déteste traiter des cellules au coup par coup tellement c'est long à exécuter. Aussi long pour chaque cellule que pour 13 d'un coup, mais 13 fois, donc. Essayez de passer par des tableaux dynamiques intermédiaires.
 

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 184
dernier inscrit
Di Martino