dans un classeur avec 26 feuilles
j'ai besoin de faire une récap sur la 27ème
afin de ne pas faire la multitude des liens à la main,
je sais que c'est possible avec index, ligne,
mais alors là c'est une formule qui reste vraiment obscure
pour ma petite tête
malgré des exemples je n'arrive pas à tout comprendre !!
c'est pourquoi je demande de l'aide
si une âme charitable courageuse et serviable
pouvait m'aider je suis prête à envoyer le fichier
j'en serais trrrrrrrrès reconnaissante
cordialement
merci d'avance
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Benead
Salut Andrea,
Voici une macro qui te créée un répertoire te tous les onglets contenus dans un classeur avec un retour (cellule A1 ou B1 ou C1 en fonction de son remplissage). A adapter en fonction de tes besoins :
'************** A placer dans un module standard ******* Sub CreationLiens() Dim Feuille As Worksheets, n As Integer, L As Integer, _ ExisteFeuille As Boolean, wCell As Range, Réponse As Long On Error Resume Next ExisteFeuille = Worksheets("Répertoire").Name If Err.Number = 9 Then Err.Clear Réponse = MsgBox("Il faut une feuille nommée ""Répertoire"" !" & _ vbCrLf & "Voulez-vous la créer ?", vbYesNo, "Création des liens Hypertextes") If Réponse = vbNo Then Exit Sub ActiveWorkbook.Worksheets.Add before:=Sheets(1) ActiveSheet.Name = "Répertoire" End If On Error GoTo 0 With Sheets("Répertoire") L = 1 .Cells.Clear For n = 1 To Worksheets.Count If Worksheets(n).Name <> "Répertoire" Then .Activate
.Hyperlinks.Add Anchor:=.Cells(L, 1), Address:="", _ SubAddress:="'" & Worksheets(n).Name & "'!A1" .Cells(L, 1).Value = Worksheets(n).Name .Cells(L, 1).Select If Worksheets(n).[A1].Hyperlinks.Count = 1 Or IsEmpty(Worksheets(n).[A1]) Then Set wCell = Worksheets(n).[A1] ElseIf Worksheets(n).[B1].Hyperlinks.Count = 1 Or IsEmpty(Worksheets(n).[B1]) Then Set wCell = Worksheets(n).[B1] ElseIf Worksheets(n).[C1].Hyperlinks.Count = 1 Or IsEmpty(Worksheets(n).[C1]) Then Set wCell = Worksheets(n).[C1] End If If Not wCell Is Nothing Then Worksheets(n).Hyperlinks.Add Anchor:=wCell, Address:="", SubAddress:="'" & _ Worksheets("Répertoire").Name & "'!" & .Cells(L, 1).Address(0, 0) wCell.Value = "Retour au Répertoire" End If L = L + 1 Set wCell = Nothing End If Next End With End Sub '********************************************
-- A+ Benead Bretagne Xl97 -------- ;-) Andrea Parker a écrit:
Bonsoir à tous
dans un classeur avec 26 feuilles j'ai besoin de faire une récap sur la 27ème afin de ne pas faire la multitude des liens à la main, je sais que c'est possible avec index, ligne, mais alors là c'est une formule qui reste vraiment obscure pour ma petite tête malgré des exemples je n'arrive pas à tout comprendre !! c'est pourquoi je demande de l'aide si une âme charitable courageuse et serviable pouvait m'aider je suis prête à envoyer le fichier j'en serais trrrrrrrrès reconnaissante cordialement merci d'avance
Salut Andrea,
Voici une macro qui te créée un répertoire te tous les onglets contenus dans un classeur avec un retour (cellule A1 ou B1 ou C1 en fonction de son
remplissage). A adapter en fonction de tes besoins :
'************** A placer dans un module standard *******
Sub CreationLiens()
Dim Feuille As Worksheets, n As Integer, L As Integer, _
ExisteFeuille As Boolean, wCell As Range, Réponse As Long
On Error Resume Next
ExisteFeuille = Worksheets("Répertoire").Name
If Err.Number = 9 Then
Err.Clear
Réponse = MsgBox("Il faut une feuille nommée ""Répertoire"" !" & _
vbCrLf & "Voulez-vous la créer ?", vbYesNo, "Création des liens Hypertextes")
If Réponse = vbNo Then Exit Sub
ActiveWorkbook.Worksheets.Add before:=Sheets(1)
ActiveSheet.Name = "Répertoire"
End If
On Error GoTo 0
With Sheets("Répertoire")
L = 1
.Cells.Clear
For n = 1 To Worksheets.Count
If Worksheets(n).Name <> "Répertoire" Then
.Activate
.Hyperlinks.Add Anchor:=.Cells(L, 1), Address:="", _
SubAddress:="'" & Worksheets(n).Name & "'!A1"
.Cells(L, 1).Value = Worksheets(n).Name
.Cells(L, 1).Select
If Worksheets(n).[A1].Hyperlinks.Count = 1 Or IsEmpty(Worksheets(n).[A1]) Then
Set wCell = Worksheets(n).[A1]
ElseIf Worksheets(n).[B1].Hyperlinks.Count = 1 Or IsEmpty(Worksheets(n).[B1]) Then
Set wCell = Worksheets(n).[B1]
ElseIf Worksheets(n).[C1].Hyperlinks.Count = 1 Or IsEmpty(Worksheets(n).[C1]) Then
Set wCell = Worksheets(n).[C1]
End If
If Not wCell Is Nothing Then
Worksheets(n).Hyperlinks.Add Anchor:=wCell, Address:="", SubAddress:="'" & _
Worksheets("Répertoire").Name & "'!" & .Cells(L, 1).Address(0, 0)
wCell.Value = "Retour au Répertoire"
End If
L = L + 1
Set wCell = Nothing
End If
Next
End With
End Sub
'********************************************
--
A+
Benead
Bretagne
Xl97
-------- ;-)
Andrea Parker a écrit:
Bonsoir à tous
dans un classeur avec 26 feuilles
j'ai besoin de faire une récap sur la 27ème
afin de ne pas faire la multitude des liens à la main,
je sais que c'est possible avec index, ligne,
mais alors là c'est une formule qui reste vraiment obscure
pour ma petite tête
malgré des exemples je n'arrive pas à tout comprendre !!
c'est pourquoi je demande de l'aide
si une âme charitable courageuse et serviable
pouvait m'aider je suis prête à envoyer le fichier
j'en serais trrrrrrrrès reconnaissante
cordialement
merci d'avance
Voici une macro qui te créée un répertoire te tous les onglets contenus dans un classeur avec un retour (cellule A1 ou B1 ou C1 en fonction de son remplissage). A adapter en fonction de tes besoins :
'************** A placer dans un module standard ******* Sub CreationLiens() Dim Feuille As Worksheets, n As Integer, L As Integer, _ ExisteFeuille As Boolean, wCell As Range, Réponse As Long On Error Resume Next ExisteFeuille = Worksheets("Répertoire").Name If Err.Number = 9 Then Err.Clear Réponse = MsgBox("Il faut une feuille nommée ""Répertoire"" !" & _ vbCrLf & "Voulez-vous la créer ?", vbYesNo, "Création des liens Hypertextes") If Réponse = vbNo Then Exit Sub ActiveWorkbook.Worksheets.Add before:=Sheets(1) ActiveSheet.Name = "Répertoire" End If On Error GoTo 0 With Sheets("Répertoire") L = 1 .Cells.Clear For n = 1 To Worksheets.Count If Worksheets(n).Name <> "Répertoire" Then .Activate
.Hyperlinks.Add Anchor:=.Cells(L, 1), Address:="", _ SubAddress:="'" & Worksheets(n).Name & "'!A1" .Cells(L, 1).Value = Worksheets(n).Name .Cells(L, 1).Select If Worksheets(n).[A1].Hyperlinks.Count = 1 Or IsEmpty(Worksheets(n).[A1]) Then Set wCell = Worksheets(n).[A1] ElseIf Worksheets(n).[B1].Hyperlinks.Count = 1 Or IsEmpty(Worksheets(n).[B1]) Then Set wCell = Worksheets(n).[B1] ElseIf Worksheets(n).[C1].Hyperlinks.Count = 1 Or IsEmpty(Worksheets(n).[C1]) Then Set wCell = Worksheets(n).[C1] End If If Not wCell Is Nothing Then Worksheets(n).Hyperlinks.Add Anchor:=wCell, Address:="", SubAddress:="'" & _ Worksheets("Répertoire").Name & "'!" & .Cells(L, 1).Address(0, 0) wCell.Value = "Retour au Répertoire" End If L = L + 1 Set wCell = Nothing End If Next End With End Sub '********************************************
-- A+ Benead Bretagne Xl97 -------- ;-) Andrea Parker a écrit:
Bonsoir à tous
dans un classeur avec 26 feuilles j'ai besoin de faire une récap sur la 27ème afin de ne pas faire la multitude des liens à la main, je sais que c'est possible avec index, ligne, mais alors là c'est une formule qui reste vraiment obscure pour ma petite tête malgré des exemples je n'arrive pas à tout comprendre !! c'est pourquoi je demande de l'aide si une âme charitable courageuse et serviable pouvait m'aider je suis prête à envoyer le fichier j'en serais trrrrrrrrès reconnaissante cordialement merci d'avance
Andrea Parker
soit j'ai mal expliqué soit tu n'as pas tout saisi je travaille dans un seul classeur et c'est des liens entre cellules que je souhaite
mais je garde ta macro sous le coude merci
soit j'ai mal expliqué soit tu n'as pas tout saisi
je travaille dans un seul classeur
et c'est des liens entre cellules que je souhaite
soit j'ai mal expliqué soit tu n'as pas tout saisi je travaille dans un seul classeur et c'est des liens entre cellules que je souhaite
mais je garde ta macro sous le coude merci
Andrea Parker
en fait plus simple j'ai une ligne dans ma feuille récap qui va chercher le contenu de cellules de la feuille 1
je veux simplement recopier cette ligne vers le bas en changeant le nom de la feuille sachant que toutes mes feuilles sont nommées par exemple 1 & 2, 3 & 4 jusqu'à 51 & 52
Ce qui donne comme formule sur la récap par exemple dans la cellule D4 ='1 & 2'!$G$23+'1 & 2'!$N$23
Andrea Parker a écrit:
Bonsoir à tous
dans un classeur avec 26 feuilles j'ai besoin de faire une récap sur la 27ème afin de ne pas faire la multitude des liens à la main, je sais que c'est possible avec index, ligne, mais alors là c'est une formule qui reste vraiment obscure pour ma petite tête malgré des exemples je n'arrive pas à tout comprendre !! c'est pourquoi je demande de l'aide si une âme charitable courageuse et serviable pouvait m'aider je suis prête à envoyer le fichier j'en serais trrrrrrrrès reconnaissante cordialement merci d'avance
en fait plus simple
j'ai une ligne dans ma feuille récap qui va chercher le contenu
de cellules de la feuille 1
je veux simplement recopier cette ligne vers le bas en changeant
le nom de la feuille sachant que toutes mes feuilles sont nommées
par exemple 1 & 2, 3 & 4 jusqu'à 51 & 52
Ce qui donne comme formule sur la récap par exemple dans la cellule D4
='1 & 2'!$G$23+'1 & 2'!$N$23
Andrea Parker a écrit:
Bonsoir à tous
dans un classeur avec 26 feuilles
j'ai besoin de faire une récap sur la 27ème
afin de ne pas faire la multitude des liens à la main,
je sais que c'est possible avec index, ligne,
mais alors là c'est une formule qui reste vraiment obscure
pour ma petite tête
malgré des exemples je n'arrive pas à tout comprendre !!
c'est pourquoi je demande de l'aide
si une âme charitable courageuse et serviable
pouvait m'aider je suis prête à envoyer le fichier
j'en serais trrrrrrrrès reconnaissante
cordialement
merci d'avance
en fait plus simple j'ai une ligne dans ma feuille récap qui va chercher le contenu de cellules de la feuille 1
je veux simplement recopier cette ligne vers le bas en changeant le nom de la feuille sachant que toutes mes feuilles sont nommées par exemple 1 & 2, 3 & 4 jusqu'à 51 & 52
Ce qui donne comme formule sur la récap par exemple dans la cellule D4 ='1 & 2'!$G$23+'1 & 2'!$N$23
Andrea Parker a écrit:
Bonsoir à tous
dans un classeur avec 26 feuilles j'ai besoin de faire une récap sur la 27ème afin de ne pas faire la multitude des liens à la main, je sais que c'est possible avec index, ligne, mais alors là c'est une formule qui reste vraiment obscure pour ma petite tête malgré des exemples je n'arrive pas à tout comprendre !! c'est pourquoi je demande de l'aide si une âme charitable courageuse et serviable pouvait m'aider je suis prête à envoyer le fichier j'en serais trrrrrrrrès reconnaissante cordialement merci d'avance
FxM
Bonsoir Andrea,
Andrea Parker wrote:
en fait plus simple j'ai une ligne dans ma feuille récap qui va chercher le contenu de cellules de la feuille 1
je veux simplement recopier cette ligne vers le bas en changeant le nom de la feuille sachant que toutes mes feuilles sont nommées par exemple 1 & 2, 3 & 4 jusqu'à 51 & 52
Ce qui donne comme formule sur la récap par exemple dans la cellule D4 ='1 & 2'!$G$23+'1 & 2'!$N$23
Deux solutions :
** par fonction perso si tu as toujours la même structure de noms de feuille (2 nombres séparés par un espace, le caractère & et un autre espace) :
Alt-F11 | Insertion | module, copies-y ce qui suit :
Public Function increment(cel) Application.Volatile True Dim nb As Double, ok As Boolean, ou As String Dim d As String, k As String, vie As String, nou As String Dim a As Integer, e As Integer Dim b As Integer
On Error Resume Next nb = 0: ok = False: ou = cel.Address Do Until ok = True With Sheets(cel.Worksheet.Name) k = .Range(ou).Formula If k = "" Then Exit Function d = Replace(Replace(k, "=increment(", ""), ")", "") If d = "" Then Exit Function nb = nb + 1: ou = d If Left(d, 1) = "=" Then ok = True End If End With Loop
a = InStr(1, ou, "'") e = InStr(1, ou, "&") b = CInt(Replace(Mid(k, a + 1, e - a - 1), " ", "")) vie = "'" & b & " & " & b + 1 & "'!" nou = "'" & b + (2 * nb + 0) & " & " & b + (2 * nb + 1) & "'!" k = Replace(k, vie, nou) increment = Evaluate(k) End Function
Usage : en D4, tu as : ='1 & 2'!$G$23+'1 & 2'!$N$23 en D5, entre : =increment(D4) Le résultat est équivalent à ='3 & 4'!$G$23+'3 & 4'!$N$23
Recopie vers le bas, tu as : en D6, =increment(D5) Le résultat est équivalent à ='5 & 6'!$G$23+'5 & 6'!$N$23 etc, etc
** sous forme de formule :
Avec le texte '1 & 2'! en A1 : =indirect(A1 & $G$23) + indirect(A1 & $N$23)
Ca paraît plus simple mais il te faut entrer le nom des feuilles manuellement :o)
@+ FxM
Andrea Parker a écrit:
Bonsoir à tous
dans un classeur avec 26 feuilles j'ai besoin de faire une récap sur la 27ème afin de ne pas faire la multitude des liens à la main, je sais que c'est possible avec index, ligne, mais alors là c'est une formule qui reste vraiment obscure pour ma petite tête malgré des exemples je n'arrive pas à tout comprendre !! c'est pourquoi je demande de l'aide si une âme charitable courageuse et serviable pouvait m'aider je suis prête à envoyer le fichier j'en serais trrrrrrrrès reconnaissante cordialement merci d'avance
Bonsoir Andrea,
Andrea Parker wrote:
en fait plus simple
j'ai une ligne dans ma feuille récap qui va chercher le contenu
de cellules de la feuille 1
je veux simplement recopier cette ligne vers le bas en changeant
le nom de la feuille sachant que toutes mes feuilles sont nommées
par exemple 1 & 2, 3 & 4 jusqu'à 51 & 52
Ce qui donne comme formule sur la récap par exemple dans la cellule D4
='1 & 2'!$G$23+'1 & 2'!$N$23
Deux solutions :
** par fonction perso si tu as toujours la même structure de noms de
feuille (2 nombres séparés par un espace, le caractère & et un autre
espace) :
Alt-F11 | Insertion | module, copies-y ce qui suit :
Public Function increment(cel)
Application.Volatile True
Dim nb As Double, ok As Boolean, ou As String
Dim d As String, k As String, vie As String, nou As String
Dim a As Integer, e As Integer
Dim b As Integer
On Error Resume Next
nb = 0: ok = False: ou = cel.Address
Do Until ok = True
With Sheets(cel.Worksheet.Name)
k = .Range(ou).Formula
If k = "" Then Exit Function
d = Replace(Replace(k, "=increment(", ""), ")", "")
If d = "" Then Exit Function
nb = nb + 1: ou = d
If Left(d, 1) = "=" Then
ok = True
End If
End With
Loop
a = InStr(1, ou, "'")
e = InStr(1, ou, "&")
b = CInt(Replace(Mid(k, a + 1, e - a - 1), " ", ""))
vie = "'" & b & " & " & b + 1 & "'!"
nou = "'" & b + (2 * nb + 0) & " & " & b + (2 * nb + 1) & "'!"
k = Replace(k, vie, nou)
increment = Evaluate(k)
End Function
Usage :
en D4, tu as : ='1 & 2'!$G$23+'1 & 2'!$N$23
en D5, entre : =increment(D4)
Le résultat est équivalent à ='3 & 4'!$G$23+'3 & 4'!$N$23
Recopie vers le bas, tu as :
en D6, =increment(D5)
Le résultat est équivalent à ='5 & 6'!$G$23+'5 & 6'!$N$23
etc, etc
** sous forme de formule :
Avec le texte '1 & 2'! en A1 :
=indirect(A1 & $G$23) + indirect(A1 & $N$23)
Ca paraît plus simple mais il te faut entrer le nom des feuilles
manuellement :o)
@+
FxM
Andrea Parker a écrit:
Bonsoir à tous
dans un classeur avec 26 feuilles
j'ai besoin de faire une récap sur la 27ème
afin de ne pas faire la multitude des liens à la main,
je sais que c'est possible avec index, ligne,
mais alors là c'est une formule qui reste vraiment obscure
pour ma petite tête
malgré des exemples je n'arrive pas à tout comprendre !!
c'est pourquoi je demande de l'aide
si une âme charitable courageuse et serviable
pouvait m'aider je suis prête à envoyer le fichier
j'en serais trrrrrrrrès reconnaissante
cordialement
merci d'avance
en fait plus simple j'ai une ligne dans ma feuille récap qui va chercher le contenu de cellules de la feuille 1
je veux simplement recopier cette ligne vers le bas en changeant le nom de la feuille sachant que toutes mes feuilles sont nommées par exemple 1 & 2, 3 & 4 jusqu'à 51 & 52
Ce qui donne comme formule sur la récap par exemple dans la cellule D4 ='1 & 2'!$G$23+'1 & 2'!$N$23
Deux solutions :
** par fonction perso si tu as toujours la même structure de noms de feuille (2 nombres séparés par un espace, le caractère & et un autre espace) :
Alt-F11 | Insertion | module, copies-y ce qui suit :
Public Function increment(cel) Application.Volatile True Dim nb As Double, ok As Boolean, ou As String Dim d As String, k As String, vie As String, nou As String Dim a As Integer, e As Integer Dim b As Integer
On Error Resume Next nb = 0: ok = False: ou = cel.Address Do Until ok = True With Sheets(cel.Worksheet.Name) k = .Range(ou).Formula If k = "" Then Exit Function d = Replace(Replace(k, "=increment(", ""), ")", "") If d = "" Then Exit Function nb = nb + 1: ou = d If Left(d, 1) = "=" Then ok = True End If End With Loop
a = InStr(1, ou, "'") e = InStr(1, ou, "&") b = CInt(Replace(Mid(k, a + 1, e - a - 1), " ", "")) vie = "'" & b & " & " & b + 1 & "'!" nou = "'" & b + (2 * nb + 0) & " & " & b + (2 * nb + 1) & "'!" k = Replace(k, vie, nou) increment = Evaluate(k) End Function
Usage : en D4, tu as : ='1 & 2'!$G$23+'1 & 2'!$N$23 en D5, entre : =increment(D4) Le résultat est équivalent à ='3 & 4'!$G$23+'3 & 4'!$N$23
Recopie vers le bas, tu as : en D6, =increment(D5) Le résultat est équivalent à ='5 & 6'!$G$23+'5 & 6'!$N$23 etc, etc
** sous forme de formule :
Avec le texte '1 & 2'! en A1 : =indirect(A1 & $G$23) + indirect(A1 & $N$23)
Ca paraît plus simple mais il te faut entrer le nom des feuilles manuellement :o)
@+ FxM
Andrea Parker a écrit:
Bonsoir à tous
dans un classeur avec 26 feuilles j'ai besoin de faire une récap sur la 27ème afin de ne pas faire la multitude des liens à la main, je sais que c'est possible avec index, ligne, mais alors là c'est une formule qui reste vraiment obscure pour ma petite tête malgré des exemples je n'arrive pas à tout comprendre !! c'est pourquoi je demande de l'aide si une âme charitable courageuse et serviable pouvait m'aider je suis prête à envoyer le fichier j'en serais trrrrrrrrès reconnaissante cordialement merci d'avance