Récupération d'info

  • Initiateur de la discussion Initiateur de la discussion Ronan
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

Ronan

Guest
Salut à toutes et à tous.

Voilà mon problème, je cherche une fonction ou une combine pour réaliser un tableau qui récupère en feuil1 des infos de feuil2, 3, … qui n’existe pas encore !!!
En A2 feuil1 > je voudrai l’info A2 feuil2, en A3 feuil1 > je voudrai l’info A3 feuil2…
En A3 feuil1 > je voudrai l’info A2 feuil3, en A3 feuil1 > je voudrai l’info A3 feuil3…
- …
et tout cela alors que les feuilles ne sont pas encore crées, cela est réalisable avec des formules classiques si l’ensemble des feuilles est crées en utilisant =’onglet !A2, mais je ne connais pas encore le nom de mes onglets et je pensai qu’en passant par du VBA en utilisant l’adresse de la feuille ( Feuil1, feuil2 … ) ce serait possible.
Si quelqu’un m’a compris et a une solution, merci à lui.
Ronan.
 
Bonjour Ronan

Si j'ai bien compris ton problème, voici une Function VBA à mettre dans un module.

Public Function DerniereFeuille() as string
DerniereFeuille = Sheets(Sheets.Count).Name
End Function

Elle retourne le nom de la dernière feuille du classeur, attention cela dépend de l'emplacement c'est celle placée à l'extrême droite.

Pour l'employer tu as plusieurs solutions
=INDIRECT("'"& DerniereFeuille() & "'!A2"), les ' sont utile quand le nom de la feuille contient un espace, ils ne gênent pas dans l'autre cas.
ou
=INDIRECT(ADRESSE(2;1;;;DerniereFeuille()))

@+Jean-Marie
 
Bonjoure

Essaye un truc dans ce style

Public Sub vev()
Dim c As Range
Dim i As Byte
For Each c In Range("a3:a" & Range("a500").End(xlUp).Row)
On Error Resume Next
For i = 1 To 15
c.Offset(0, i).Value = Sheets(c.Value).Cells(2, i).Value
Next i
Next c
End Sub

salut
Hervé
 
re

le tout combiné

Public Sub vev()
Dim c As Range
Dim i As Byte
Dim n As Integer
n = 1
For Each ws In Worksheets
Range("a" & n).Value = ws.Name
n = n + 1
Next ws
For Each c In Range("a2:a" & Range("a500").End(xlUp).Row)
On Error Resume Next
For i = 1 To 15
c.Offset(0, i).Value = Sheets(c.Value).Cells(2, i).Value
Next i
Next c
End Sub


Attention de bien partir de la cellule A2, pour le renvoi des données, a moins que tu veuilles aussi récupérer les infos de ta feuille de travaille.

Salut
Hervé
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
16
Affichages
2 K
Réponses
3
Affichages
569
Réponses
36
Affichages
3 K
Réponses
6
Affichages
1 K
Retour