Récupérer les références d'une feuille dans uncode VBA

Bonjour à tous et toutes,

Je cherche désespérément comment indiquer dans mon code vba que les feuilles sur lesquelles doivent être fait une série d'opération sont celles mentionnées dans la colonne A de ma feuille index.

exemple: : j'ai une vingtaine de feuilles dans mon classeur (jamais les mêmes et avec des noms à coucher dehors) et j'indique dans les cellules A1, A2, An de mon onglet index le nom des feuilles sur lesquelles doivent s'exécuter mon code.

j'sé po si j'ai été claire. Hello je suis perdue. Merci

bonsoir,

voici comment sélectionner les feuilles sur base du nom en colonne A d'une feuille "index"

Sub selectsheet()
    With Sheets("index")
        i = 1
        Do While .Cells(i, 1) <> ""
            Set ws = Sheets(.Cells(i, 1).Value)
            ' ws une variable qui correspond à la feuille sélectionnée
            'par exemple
            ws.Select ' on sélectionne la feuille
            tamacro ' on execute ta macro
            i = i + 1
        Loop
    End With
End Sub

Sans visibilité sur ton classeur, il est très possible que ceci doive être adapté.

Bonjour tous le monde, une autre proposition avec une boucle For

Sub ExecuterOperationsSurFeuilles()
    Dim FeuilleIndex As Worksheet
    Dim FeuilleCible As Worksheet
    Dim DerniereLigne As Long
    Dim i As Long

    ' Référence à la feuille "index"
    Set FeuilleIndex = ThisWorkbook.Sheets("index")

    ' Trouver la dernière ligne avec un nom de feuille dans la colonne A de l'Index
    DerniereLigne = FeuilleIndex.Cells(FeuilleIndex.Rows.Count, "A").End(xlUp).Row

    ' Boucle à travers les noms de feuille et effectuer les opérations
    For i = 1 To DerniereLigne
        ' Nom de la feuille cible en colonne A
        NomFeuilleCible = FeuilleIndex.Cells(i, 1).Value

        ' Vérifier si la feuille cible existe
        On Error Resume Next
        Set FeuilleCible = ThisWorkbook.Sheets(NomFeuilleCible)
        On Error GoTo 0

        ' Si la feuille cible existe, exécute les opérations ici
        If Not FeuilleCible Is Nothing Then
            ' Exemple : Écrire "Opération effectuée" dans la cellule A1 de la feuille cible
            FeuilleCible.Cells(1, 1).Value = "Opération effectuée"
        End If
    Next i
End Sub

Hello,

Merci à vos pour votre retour.

Je dois vraiment être une quiche mais je n'y arrive pas. Concretement, je voudrais qu'il inscrive en colonne D de ma feuille config le contenu de la cellule dont les coordonnées sont indiquées en colonne A (nom de la feuille source), colonne B (no de ligne), colonne C (no de colonne).

Jai essayé ça, mais ça marche pas:

Dim Line As Integer
Dim Col As Integer
With Sheets("Config")
i = 1
Do While Cells(i, 1) <> ""
Set Ws = Sheets(Cells(i, 1).Value)
Line = Sheets(Cells(i, 2).Value)
Col = Sheets(Cells(i, 3).Value)
Ws.Select
Sheets("Config").Cells(i, 4) = Sheets(Ws).Cells(Line, Col).Value
i = i + 1
Loop
End With
End Sub

bonjour,

une correction.

Sub aargh()
    Dim Lin As Long
    Dim Col As Long
    With Sheets("Config")
        i = 1
        Do While .Cells(i, 1) <> ""
            Set ws = Sheets(.Cells(i, 1).Value)
            Lin = .Cells(i, 2).Value
            Col = .Cells(i, 3).Value
            .Cells(i, 4) = ws.Cells(Lin, Col).Value
            i = i + 1
        Loop
    End With
End Sub

bonjour le fil,

@H2SO4, une toute petite nuance avec Cstr(...) , supposons qu'on a une feuille nommée "1" mais avec index 3 ...

  Set ws = Sheets(cstr(.Cells(i, 1).Value))

Un grand merci à vous pour votre aide, la qualité et la rapidité de vos réponses ! 👍

Vous êtes trop forts!

🐞

Heu... tout marche bien avec des reports mais sitôt que j'effectue des calculs + complexes (style moyenne et mediane des cellules A2 à A14 de ma feuille source (dont le nom est écrit en A1 de ma feuille "config")), ça me renvoit un message d'echec de la methode range de l'objet worksheet:

Sub test()

'Déclarations
Dim FeuilleConfig As Worksheet
Dim x As Worksheet
Dim ValMean As Variant
Dim ValMed As Variant
Dim NomFeuilleCible As String

'définitions des feuilles
Set FeuilleConfig = ThisWorkbook.Sheets("Config")
'identification de la feuille source (nom dans la cellule A1 de la feuille Config)
NomFeuilleCible = FeuilleConfig.Cells(1, 1).Value
Set x = ThisWorkbook.Sheets(NomFeuilleCible)

'calculs moyenne et médiane des cellules A2 à A14 de la feuille source
ValMean = Application.WorksheetFunction.Average(x.Range(Cells(2, 1), Cells(14, 1)))
ValMed = Application.WorksheetFunction.Median(x.Range(Cells(2, 1), Cells(14, 1)))

'ecriture des resultats dans la feuille config
FeuilleConfig.Cells(3, 3).Value = ValMean
FeuilleConfig.Cells(4, 3).Value = ValMed

End Sub

Sub test()

'Déclarations
Dim FeuilleConfig  As Worksheet
Dim x As Worksheet
Dim ValMean As Variant
Dim ValMed As Variant
Dim NomFeuilleCible As String

'définitions des feuilles
  Set FeuilleConfig = ThisWorkbook.Sheets("Config")
'identification de la feuille source (nom dans la cellule A1 de la feuille Config)
  NomFeuilleCible = FeuilleConfig.Cells(1, 1).Value
  Set x = ThisWorkbook.Sheets(NomFeuilleCible)

 'calculs moyenne et médiane des cellules A2 à A14 de la feuille source
    ValMean = Application.WorksheetFunction.Average(x.Range(Cells(2, 1), Cells(14, 1)))
    ValMed = Application.WorksheetFunction.Median(x.Range(Cells(2, 1), Cells(14, 1)))

 'ecriture des resultats dans la feuille config
    FeuilleConfig.Cells(3, 3).Value = ValMean
    FeuilleConfig.Cells(4, 3).Value = ValMed

End Sub

bonjour,

essaie cette correction, erreur dans la syntaxe pour définir la plage de calcul pour valMean et valMed x.range(cells,cells) doit être range(x.cells,x.cells) ou x.range(x.cells,x.cells) si l'instruction se trouve dans un module de feuille.

Sub test()

'Déclarations
Dim FeuilleConfig  As Worksheet
Dim x As Worksheet
Dim ValMean As Variant
Dim ValMed As Variant
Dim NomFeuilleCible As String

'définitions des feuilles
  Set FeuilleConfig = ThisWorkbook.Sheets("Config")
'identification de la feuille source (nom dans la cellule A1 de la feuille Config)
  NomFeuilleCible = FeuilleConfig.Cells(1, 1).Value
  Set x = ThisWorkbook.Sheets(NomFeuilleCible)

 'calculs moyenne et médiane des cellules A2 à A14 de la feuille source
    ValMean = Application.WorksheetFunction.Average(x.Range(x.Cells(2, 1),x.Cells(14, 1)))
    ValMed = Application.WorksheetFunction.Median(x.Range(x.Cells(2, 1), x.Cells(14, 1)))

 'ecriture des resultats dans la feuille config
    FeuilleConfig.Cells(3, 3).Value = ValMean
    FeuilleConfig.Cells(4, 3).Value = ValMed

End Sub

Merci!! 👍👍

J'aurais jamais trouvé.

Rechercher des sujets similaires à "recuperer references feuille uncode vba"