Creer une liaison dns une cellule

Résolu
Bernie15 Messages postés 31 Statut Membre -  
Bernie15 Messages postés 31 Statut Membre -
Bonjour,

j'ai une feuille index dans laquelle je voudrais que la valeur de certaines cellules soient liées avec des cellules d'autres feuilles.

par exemple :

la valeur de Index.D3 est = Feuil4.M6
puis Index.D4 = Feuil5.M6
puis Index.D5 = Feuil6.M6
etc... jusqu'à la dernière feuille

Un grand merci d'avance !!!

Configuration: Macintosh / Safari 13.1.2

7 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    a mettre dans un module et associer à un bouton ou raccourci clavier:

    Option Explicit
    Sub test()
    'Déclare la variable objet Worksheet
    Dim Ws As Worksheet
    Dim ligne As Integer 'feuille INDEX
    Dim i As Integer
    ligne = 3
    i = 3
    'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris
    'en compte.
    'ThisWorkbook correspond à l'objet classeur contenant la macro
    For Each Ws In ThisWorkbook.Worksheets
        If Ws.Name <> "INDEX" Then
        Sheets("INDEX").Range("D" & ligne).FormulaR1C1 = "=" & Ws.Name & "!R[" & i & "]C[9]" 'formule
       ligne = ligne + 1
       i = i - 1
        End If
    Next Ws
    End Sub
    


    Voilà
    0
  2. Bernie15 Messages postés 31 Statut Membre 1
     
    merci pour la réponse, j'essaie dès que j'ai 5 minutes !

    Merci
    0
  3. Bernie15 Messages postés 31 Statut Membre 1
     
    Génial, ça marche super et je viens d'apprendre beaucoup !!!
    Maintenant, je vais tenter d'ajouter d'autres liaisons, encore une bonne soirée en vue (-:
    À+
    0
  4. Bernie15 Messages postés 31 Statut Membre 1
     
    Bon, j'ai rajouté 2 liaisons à ta macro

    Feuil4.M17 vers Index.F3 et
    Feuil4.E20 vers Index.H3

    et en tâtonnant, voilà la macro

    Option Explicit
    Sub test()
    'Déclare la variable objet Worksheet
    Dim Ws As Worksheet
    Dim ligne As Integer 'feuille INDEX
    Dim i As Integer
    ligne = 3
    i = 3
    'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris
    'en compte.
    'ThisWorkbook correspond à l'objet classeur contenant la macro
    For Each Ws In ThisWorkbook.Worksheets
        If Ws.Name <> "Index" And Ws.Name <> "Model" And Ws.Name <> "Listes" Then
        Sheets("INDEX").Range("D" & ligne).FormulaR1C1 = "=" & Ws.Name & "!R[" & i & "]C[9]"
        End If
    
        If Ws.Name <> "Index" And Ws.Name <> "Model" And Ws.Name <> "Listes" Then
        Sheets("INDEX").Range("F" & ligne).FormulaR1C1 = "=" & Ws.Name & "!R[" & i + 11 & "]C[7]"
        End If
        
        If Ws.Name <> "Index" And Ws.Name <> "Model" And Ws.Name <> "Listes" Then
        Sheets("INDEX").Range("H" & ligne).FormulaR1C1 = "=" & Ws.Name & "!R[" & i + 14 & "]C[-3]"
        
       ligne = ligne + 1
       i = i - 1
        End If
    Next Ws
    End Sub


    Elle fonctionne, mais je ne comprends pas vraiment les 2 IF que j'ai rajoutés qui calculent la liaison..
    Il n'y a pas plus simple ?
    P.S. : j'ai rajouté And Ws.Name <> "Model" And Ws.Name <> "Listes" car dans la réalité j'ai ces 2 feuilles en plus.

    Enfin, ça marche, mais si je pouvais simplifier et/ou comprendre, ce serait le TOP
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    cela n'est pris que dans le dernier If !!!

    ligne = ligne + 1
       i = i - 1


    c'est donc inutile, ce n'est valable que pour la colonne D !!!

    Feuil4.M17 vers Index.F3 et
    Feuil4.E20 vers Index.H3


    pour cela une macro est inutile, autant le faire manuellement!!!

    0
    1. Bernie15 Messages postés 31 Statut Membre 1
       
      Bon, ben.... avec 110 onglets créés, ta formule ne fonctionne pas )-:
      J'abandonne, je lierai les cellules à la main, ça va que je n'en ai pas 10.000 (-:
      Bonne soirée !
      0
  7. Bernie15 Messages postés 31 Statut Membre 1
     
    mais ce qui est fou, c'est que, avec seulement 32 onglets créés, elle fonctionne parfaitement.

    Je capitule, je ne comprends pas
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      J'ai essayer de reproduire ton cas.

      j'ai ajouter 110 feuilles

      J'ai rempli la cellule M6 des 110 feuille et j'ai lancer la macro formule et cela fonctionne!

      Option Explicit
      Sub ajout() 'ajout de 110 feuilles
      Dim i As Integer
      For i = 1 To 110
      ActiveWorkbook.Sheets.Add After:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count)
      Next
      End Sub
      Sub formule() 'ajout formule
      'Déclare la variable objet Worksheet
      Dim Ws As Worksheet
      Dim ligne As Integer 'feuille INDEX
      Dim i As Integer
      ligne = 3
      i = 3
      'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris
      'en compte.
      'ThisWorkbook correspond à l'objet classeur contenant la macro
      For Each Ws In ThisWorkbook.Worksheets
          If Ws.Name <> "INDEX" And Ws.Name <> "Model" And Ws.Name <> "Listes" Then
          Sheets("INDEX").Range("D" & ligne).FormulaR1C1 = "=" & Ws.Name & "!R[" & i & "]C[9]"
          ligne = ligne + 1
         i = i - 1
          End If
      Next Ws
      End Sub
      Sub remplir() 'remplir la cellule M6 de toutes les feuilles
      Dim Ws As Worksheet
      For Each Ws In ThisWorkbook.Worksheets
          If Ws.Name <> "Index" And Ws.Name <> "Model" And Ws.Name <> "Listes" Then
         Sheets(Ws.Name).Range("M6") = "1234567890"
          End If
      Next Ws
      End Sub
      


      faire l'essai avec un classeur vierge contenant 3 feuilles INDEX,Model et Listes

      Voilà

      @ + Le Pivert
      0
  8. Bernie15 Messages postés 31 Statut Membre 1
     
    J'ai résolu mon souci.
    Les feuilles étaient créées à partir d'une liste qui venait d'un vieux fichiers.
    J'avais simplement fait un copier-coller et certainement qu'il y avait des incompatibilités entre la vieille version Excel sur un PC et ma version récente Excel sur Mac.
    Merci pour vos macros, votre temps et vos réponses rapides.
    Je ne dis pas "à bientôt" ????????, mais je suis tellement novice...
    Bonne journée !
    0