Récupération d'info

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.
 
J

Jean-Marie

Guest
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
 
R

Ronan

Guest
Merci a toi Jean Marie, c'est un bon début, mais avec ces formules je ne récupère que les infos de la dernière feuille, et voudrai également récupèrer les infos présente dans l'ensemble des autres feuilles.
Ronan.
 

Pièces jointes

  • Recherche_info.zip
    7 KB · Affichages: 13
H

Hervé

Guest
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é
 
H

Hervé

Guest
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é
 

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia