RESOLU - onglet

Marcopolo

XLDnaute Nouveau
bonjour tout le monde,
j'ai un petit problème avec des macro copier ici et la ... "y a des idées mais pas le savoir" lol !


p'tit 1 :
j'aimerais listé les onglets et en même temps récupéré le contenue de certaine cellules. je voulais faire une bidouille des deux code mais nada

code 1
VB:
Sub Snamelist() 'liste tout les onglets sans exception nickel pour moi 
Dim i As Integer

    Range("a5").Select ' ici départ du tableau

    For i = 1 To Sheets.Count
        ActiveCell.Value = Sheets(i).Name
        ActiveCell.Offset(1).Select

    Next i
    
   
End Sub

code 2
VB:
Sub ListeRecap() '<=== ne totalise pas tout les onglets que celle avec un nom numérique , mais liste les cellules qui m’intéresse :D 
Dim F As Worksheet
Dim Dest As Range

Set Dest = ActiveSheet.Range("A5") ' ici départ du tableau

Dest.CurrentRegion.Offset(1).ClearContents

For Each F In Worksheets

  If IsNumeric(F.Name) Then ' je pense que mon problème ce trouve la ...
    Dest = F.Name
    Dest.Offset(, 1) = F.Range("b6")
    Dest.Offset(, 2) = F.Range("d6")
    Dest.Offset(, 3) = F.Range("b9")
    Dest.Offset(, 4) = F.Range("d9")
    Set Dest = Dest.Offset(1)
  End If
Next F

Set Dest = Nothing

End Sub

P'tit 2:
j'aimerai une lien de redirection par nom d'onglet ... pour pointé ce dernier plus rapidement :mrgreen:

________________________________________________________

l'idée serai :
_ rassembler tout les classeurs d'un dossier sur un seul classeur ( ça OK) , Ok mais je rencontre un problème en fin d'action du code
_ il me faut faire, une liste de tout les onglets (ça ok) et en extraire des informations (ça fonctionne a 50%).
_ j'aimerais que le nom de l'onglet pointe voir ce dernier (plus rapide a retrouver) .
si possible en un seul code pour les deux derniers


plus tard ... j'aimerais via un autre classeur regrouper toute les infos de la même manière , enfin sauf que la il y aurais des dossiers
comme exemple
ARRIBO /
... /tagada
.../dragibus
... / ext
une analyse mensuel ==> des analyses bi-mensuel et une analyse en fin d'année

voila si solution vous avez , je me ferai un plaisir de les acceptés

merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Marcopolo, bonjour le forum,

Le code ci-dessous implique que le classeur contenant la macro se trouve dans le même dossier que les autres classeurs :

VB:
Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CH As String 'déclare la variable CH (CHemin d'accès)
Dim DEST1 As Range 'déclare la variable DEST1 (cellule de DESTination 1))
Dim DEST2 As Range 'déclare la variable DEST2 (cellule de DESTination 2)
Dim F As String 'déclare la variable F (Fichiers)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim O As Worksheet 'déclare la variable O (Onglets)

Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets(1) 'définit l'onglet destination OD (a adapter à ton cas)
CH = CD.Path & "\" 'définit le chemin d'accès CH
F = Dir(CH & "*.xlsx") 'définit le premier fichier excel F contenu dans le dossier ayant CH comme chemin d'accès
Do While F <> "" 'boucle tant qu'il a y des fichiers F contenus dans le dossier ayant CH comme chemin d'accès
    If F = CD.Name Then GoTo suite 'condition : si F est ce classeur, va a l'étiquette "suite"
    Application.Workbooks.Open CH & F 'ouvre le fichier F
    Set CS = ActiveWorkbook 'définit le classeur source CS
    'définit la cellule de destination DEST1 (A5 si A5 est vide, sinon la seconde cellule vide dans la colonne A)
    Set DEST1 = IIf(OD.Range("A5").Value = "", OD.Range("A5"), OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(2, 0))
    DEST1.Value = CS.Name 'renvoie le nom du classeur dans DEST1
    For Each O In CS.Sheets 'boucle sur tous les onglets O du classeur source CS
        'définit la cellule de destination DEST2 (la première cellule vide dans la colonne A)
        Set DEST2 = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
        DEST2.Value = O.Name 'renvoie le nom de l'onglet dans DEST2
        'définit le lien hypertexte qui renvoie dans la cellule A1 de l'onglet O du classeur CS
        O.Hyperlinks.Add Anchor:=DEST2, Address:=CH & DEST1.Value, SubAddress:="#" & DEST2.Value & "!A1"
        DEST2.Offset(0, 1).Value = O.Range("B6") 'récupère la valeur de la cellule B6 de l'onglet O
        DEST2.Offset(0, 2).Value = O.Range("D6") 'récupère la valeur de la cellule D6 de l'onglet O
        DEST2.Offset(0, 3).Value = O.Range("B9") 'récupère la valeur de la cellule B9 de l'onglet O
        DEST2.Offset(0, 4).Value = O.Range("D9") 'récupère la valeur de la cellule D9 de l'onglet O
    Next O 'prochain onglet de la boucle
    CS.Close False 'ferme le classeur source sans enregistrer
suite: 'étiquette
    F = Dir 'prochain fichier contenu dans le dossier ayant CH comme chemin d'accès
Loop 'boucle
End Sub
 

Discussions similaires

Réponses
12
Affichages
225
  • Question
Microsoft 365 TEXTBOX
Réponses
7
Affichages
284

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 868
dernier inscrit
pierreselo33