Macros Excel - liens entre cellules de differents onglets
1 réponse
simina.lazar
1) Liens entre cellules de differents onglets
----------------------------------------------
Je veux faire une macro qui fasse un lien entre la cellule
selectionnee et une cellule d'un autre onglet, mais je veux que le
numero de la ligne soit la variable "Z_Li" (et non pas un chiffre).
Plus precisemment, dans l'instruction suivante :
ActiveCell.FormulaR1C1 = "=Pilotage!R[25]C[1]"
je veux remplacer le chiffre "25" par la variable Z_Li.
J'ai essaye, mais le programme s'arrete : erreur 1004.
Quelqu'un pourrait-il me renseigner sur la syntaxe a utiliser (ou sur
la declaration de la variable "Z_Li") ?
2) Passage d'une adresse relative dans plusieurs onglets
---------------------------------------------------------
Par la methode la plus simple: celle de l'enregistrement, j'ai ecrit
une macro qui execute plusieurs operations dans plusieurs onglets.
Toutefois pour me positionner sur la ligne desiree dans chacun des
onglets, j'ai ete obligee d'intervenir manuellement dans la procedure
Visual Basic. Est ce qu'il y avait un autre moyen pour passage
d'adresse relative entre les onglets d'une maniere automatique ?
Ci-dessous, je presente ma procedure.
3) Procedure d'insertion des groupes de ligne dans plusieurs onglets
--------------------------------------------------------------------
J'ai marque entre signes d'interrogation les instructions qui ne
marchent pas.
Sub Prc_insere_t33()
'
' Prc_insere_t3 Macro
' Macro enregistre le 17/12/2004 par lazar
'
Dim Z_Ligne As Long
Dim Z_Ligne_c As Integer
Dim Z_Ligne_a As Integer
Dim Z_Tache As Long
Dim Z_Li As Integer
' ---------------------------------------------------------------------------
' Onglet Pilotage
' Insertion de 6 lignes et copie d'un ensemble de 6 lignes modele
(de la fin du fichier)
' ---------------------------------------------------------------------------
' Z_Ligne = Application.InputBox("Cliquez sur une cellule",
Type:=8).Row
Z_Ligne = Selection.Row
Z_Tache = ((Z_Ligne - 18) / 6) + 1
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.End(xlToLeft).Select
ActiveCell.FormulaR1C1 = "yyyyyy"
Cells.Find(What:="xxxxxx", After:=ActiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Offset(3, 0).Range("A1").Select
Selection.End(xlToLeft).Select
ActiveCell.Rows("1:6").EntireRow.Select
ActiveCell.Activate
Selection.Copy
ActiveCell.Offset(-2, 0).Range("A1").Select
Cells.Find(What:="yyyyyy", After:=ActiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Rows("1:1").EntireRow.Select
ActiveCell.Activate
ActiveSheet.Paste
Selection.End(xlToLeft).Select
' ---------------------------------------------------------------------------
' Onglet Cumuls
' Copie des 6 lignes precedentes et insertion au dessus
' ---------------------------------------------------------------------------
Sheets("Cumuls").Select
Application.Goto Reference:="R1C2"
Z_Ligne_c = Z_Ligne + 1
' ---------------------------------------------------------------------------
' Onglet Avancement
' Insertion d'une ligne avec liens vers des cellules de l'onglet
Pilotage
' ---------------------------------------------------------------------------
Sheets("Avancement").Select
Application.Goto Reference:="R1C1"
Z_Ligne_a = Z_Tache + 2
Cells(Z_Ligne_a, 1).Activate
ActiveCell.Offset(0, 0).Range("A1").Select
Selection.EntireRow.Insert
' ============
' Premier lien
' ============
' ????????????????????????????????????????????????????????????
' Essai 1 - ca ne marche pas - erreur 1004
' Z_Li = Z_Ligne - Z_Ligne_a
''??? ActiveCell.FormulaR1C1 = "=Pilotage!R[Z_Li]C[1]" ??????
' Essai 2 - ca marche a peu pres, mais sans liens
' ??? ActiveCell.FormulaR1C1 =
ThisWorkbook.Sheets("Pilotage").Cells(Z_Ligne, 2) ?
' Essai 3 - cela marche - mais evidemment l'adresse n'est pas bonne
ActiveCell.FormulaR1C1 = "=Pilotage!R[25]C[1]"
' ????????????????????????????????????????????????????????????
' ????????????????????????????????????????????????????????????
' Essai 1 - ca ne marche pas - erreur 1004
' Z_Li = Z_Li + 4
''??? ActiveCell.FormulaR1C1 = "=Pilotage!R[Z_Li]C[4]" ??????
' Essai 2 - ca marche a peu pres, mais sans liens
' Z_Li = Z_Ligne + 4
''??? ActiveCell.FormulaR1C1 =
ThisWorkbook.Sheets("Pilotage").Cells(Z_Ligne, 5) ?
' Essai 3 - cela marche - mais evidemment l'adresse n'est pas bonne
ActiveCell.FormulaR1C1 = "=Pilotage!R[29]C[4]"
' ????????????????????????????????????????????????????????????
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
Gaenonius
A ta question 1 (pour amorcer la pompe) :
Sub essai() Dim Z_Li As Long Z_Li = 25 ActiveCell.FormulaR1C1 = "=Pilotage!R[" & Z_Li & "]C[1]" End Sub
-- Gaenonius
1) Liens entre cellules de differents onglets ---------------------------------------------- Je veux faire une macro qui fasse un lien entre la cellule selectionnee et une cellule d'un autre onglet, mais je veux que le numero de la ligne soit la variable "Z_Li" (et non pas un chiffre). Plus precisemment, dans l'instruction suivante : ActiveCell.FormulaR1C1 = "=Pilotage!R[25]C[1]" je veux remplacer le chiffre "25" par la variable Z_Li. J'ai essaye, mais le programme s'arrete : erreur 1004. Quelqu'un pourrait-il me renseigner sur la syntaxe a utiliser (ou sur la declaration de la variable "Z_Li") ?
2) Passage d'une adresse relative dans plusieurs onglets --------------------------------------------------------- Par la methode la plus simple: celle de l'enregistrement, j'ai ecrit une macro qui execute plusieurs operations dans plusieurs onglets. Toutefois pour me positionner sur la ligne desiree dans chacun des onglets, j'ai ete obligee d'intervenir manuellement dans la procedure Visual Basic. Est ce qu'il y avait un autre moyen pour passage d'adresse relative entre les onglets d'une maniere automatique ? Ci-dessous, je presente ma procedure.
3) Procedure d'insertion des groupes de ligne dans plusieurs onglets -------------------------------------------------------------------- J'ai marque entre signes d'interrogation les instructions qui ne marchent pas.
Sub Prc_insere_t33() ' ' Prc_insere_t3 Macro ' Macro enregistre le 17/12/2004 par lazar ' Dim Z_Ligne As Long Dim Z_Ligne_c As Integer Dim Z_Ligne_a As Integer Dim Z_Tache As Long Dim Z_Li As Integer
' --------------------------------------------------------------------------- ' Onglet Pilotage ' Insertion de 6 lignes et copie d'un ensemble de 6 lignes modele (de la fin du fichier) ' --------------------------------------------------------------------------- ' Z_Ligne = Application.InputBox("Cliquez sur une cellule", Type:=8).Row Z_Ligne = Selection.Row Z_Tache = ((Z_Ligne - 18) / 6) + 1 Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.End(xlToLeft).Select ActiveCell.FormulaR1C1 = "yyyyyy" Cells.Find(What:="xxxxxx", After:¬tiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate ActiveCell.Offset(3, 0).Range("A1").Select Selection.End(xlToLeft).Select ActiveCell.Rows("1:6").EntireRow.Select ActiveCell.Activate Selection.Copy ActiveCell.Offset(-2, 0).Range("A1").Select Cells.Find(What:="yyyyyy", After:¬tiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate ActiveCell.Rows("1:1").EntireRow.Select ActiveCell.Activate ActiveSheet.Paste Selection.End(xlToLeft).Select
' --------------------------------------------------------------------------- ' Onglet Cumuls ' Copie des 6 lignes precedentes et insertion au dessus ' --------------------------------------------------------------------------- Sheets("Cumuls").Select Application.Goto Reference:="R1C2" Z_Ligne_c = Z_Ligne + 1
' --------------------------------------------------------------------------- ' Onglet Avancement ' Insertion d'une ligne avec liens vers des cellules de l'onglet Pilotage ' --------------------------------------------------------------------------- Sheets("Avancement").Select Application.Goto Reference:="R1C1" Z_Ligne_a = Z_Tache + 2 Cells(Z_Ligne_a, 1).Activate ActiveCell.Offset(0, 0).Range("A1").Select Selection.EntireRow.Insert
' =========== > ' Premier lien ' ============ ' ???????????????????????????????????????????????????????????? ' Essai 1 - ca ne marche pas - erreur 1004 ' Z_Li = Z_Ligne - Z_Ligne_a ''??? ActiveCell.FormulaR1C1 = "=Pilotage!R[Z_Li]C[1]" ??????
' Essai 2 - ca marche a peu pres, mais sans liens ' ??? ActiveCell.FormulaR1C1 > ThisWorkbook.Sheets("Pilotage").Cells(Z_Ligne, 2) ?
' Essai 3 - cela marche - mais evidemment l'adresse n'est pas bonne ActiveCell.FormulaR1C1 = "=Pilotage!R[25]C[1]" ' ????????????????????????????????????????????????????????????
' ???????????????????????????????????????????????????????????? ' Essai 1 - ca ne marche pas - erreur 1004 ' Z_Li = Z_Li + 4 ''??? ActiveCell.FormulaR1C1 = "=Pilotage!R[Z_Li]C[4]" ??????
' Essai 2 - ca marche a peu pres, mais sans liens ' Z_Li = Z_Ligne + 4 ''??? ActiveCell.FormulaR1C1 > ThisWorkbook.Sheets("Pilotage").Cells(Z_Ligne, 5) ?
' Essai 3 - cela marche - mais evidemment l'adresse n'est pas bonne ActiveCell.FormulaR1C1 = "=Pilotage!R[29]C[4]" ' ????????????????????????????????????????????????????????????
End Sub
A ta question 1 (pour amorcer la pompe) :
Sub essai()
Dim Z_Li As Long
Z_Li = 25
ActiveCell.FormulaR1C1 = "=Pilotage!R[" & Z_Li & "]C[1]"
End Sub
--
Gaenonius
1) Liens entre cellules de differents onglets
----------------------------------------------
Je veux faire une macro qui fasse un lien entre la cellule
selectionnee et une cellule d'un autre onglet, mais je veux que le
numero de la ligne soit la variable "Z_Li" (et non pas un chiffre).
Plus precisemment, dans l'instruction suivante :
ActiveCell.FormulaR1C1 = "=Pilotage!R[25]C[1]"
je veux remplacer le chiffre "25" par la variable Z_Li.
J'ai essaye, mais le programme s'arrete : erreur 1004.
Quelqu'un pourrait-il me renseigner sur la syntaxe a utiliser (ou sur
la declaration de la variable "Z_Li") ?
2) Passage d'une adresse relative dans plusieurs onglets
---------------------------------------------------------
Par la methode la plus simple: celle de l'enregistrement, j'ai ecrit
une macro qui execute plusieurs operations dans plusieurs onglets.
Toutefois pour me positionner sur la ligne desiree dans chacun des
onglets, j'ai ete obligee d'intervenir manuellement dans la procedure
Visual Basic. Est ce qu'il y avait un autre moyen pour passage
d'adresse relative entre les onglets d'une maniere automatique ?
Ci-dessous, je presente ma procedure.
3) Procedure d'insertion des groupes de ligne dans plusieurs onglets
--------------------------------------------------------------------
J'ai marque entre signes d'interrogation les instructions qui ne
marchent pas.
Sub Prc_insere_t33()
'
' Prc_insere_t3 Macro
' Macro enregistre le 17/12/2004 par lazar
'
Dim Z_Ligne As Long
Dim Z_Ligne_c As Integer
Dim Z_Ligne_a As Integer
Dim Z_Tache As Long
Dim Z_Li As Integer
' ---------------------------------------------------------------------------
' Onglet Pilotage
' Insertion de 6 lignes et copie d'un ensemble de 6 lignes modele
(de la fin du fichier)
' ---------------------------------------------------------------------------
' Z_Ligne = Application.InputBox("Cliquez sur une cellule",
Type:=8).Row
Z_Ligne = Selection.Row
Z_Tache = ((Z_Ligne - 18) / 6) + 1
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.EntireRow.Insert
Selection.End(xlToLeft).Select
ActiveCell.FormulaR1C1 = "yyyyyy"
Cells.Find(What:="xxxxxx", After:¬tiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Offset(3, 0).Range("A1").Select
Selection.End(xlToLeft).Select
ActiveCell.Rows("1:6").EntireRow.Select
ActiveCell.Activate
Selection.Copy
ActiveCell.Offset(-2, 0).Range("A1").Select
Cells.Find(What:="yyyyyy", After:¬tiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Rows("1:1").EntireRow.Select
ActiveCell.Activate
ActiveSheet.Paste
Selection.End(xlToLeft).Select
' ---------------------------------------------------------------------------
' Onglet Cumuls
' Copie des 6 lignes precedentes et insertion au dessus
' ---------------------------------------------------------------------------
Sheets("Cumuls").Select
Application.Goto Reference:="R1C2"
Z_Ligne_c = Z_Ligne + 1
' ---------------------------------------------------------------------------
' Onglet Avancement
' Insertion d'une ligne avec liens vers des cellules de l'onglet
Pilotage
' ---------------------------------------------------------------------------
Sheets("Avancement").Select
Application.Goto Reference:="R1C1"
Z_Ligne_a = Z_Tache + 2
Cells(Z_Ligne_a, 1).Activate
ActiveCell.Offset(0, 0).Range("A1").Select
Selection.EntireRow.Insert
' =========== > ' Premier lien
' ============
' ????????????????????????????????????????????????????????????
' Essai 1 - ca ne marche pas - erreur 1004
' Z_Li = Z_Ligne - Z_Ligne_a
''??? ActiveCell.FormulaR1C1 = "=Pilotage!R[Z_Li]C[1]" ??????
' Essai 2 - ca marche a peu pres, mais sans liens
' ??? ActiveCell.FormulaR1C1 > ThisWorkbook.Sheets("Pilotage").Cells(Z_Ligne, 2) ?
' Essai 3 - cela marche - mais evidemment l'adresse n'est pas bonne
ActiveCell.FormulaR1C1 = "=Pilotage!R[25]C[1]"
' ????????????????????????????????????????????????????????????
' ????????????????????????????????????????????????????????????
' Essai 1 - ca ne marche pas - erreur 1004
' Z_Li = Z_Li + 4
''??? ActiveCell.FormulaR1C1 = "=Pilotage!R[Z_Li]C[4]" ??????
' Essai 2 - ca marche a peu pres, mais sans liens
' Z_Li = Z_Ligne + 4
''??? ActiveCell.FormulaR1C1 > ThisWorkbook.Sheets("Pilotage").Cells(Z_Ligne, 5) ?
' Essai 3 - cela marche - mais evidemment l'adresse n'est pas bonne
ActiveCell.FormulaR1C1 = "=Pilotage!R[29]C[4]"
' ????????????????????????????????????????????????????????????
Sub essai() Dim Z_Li As Long Z_Li = 25 ActiveCell.FormulaR1C1 = "=Pilotage!R[" & Z_Li & "]C[1]" End Sub
-- Gaenonius
1) Liens entre cellules de differents onglets ---------------------------------------------- Je veux faire une macro qui fasse un lien entre la cellule selectionnee et une cellule d'un autre onglet, mais je veux que le numero de la ligne soit la variable "Z_Li" (et non pas un chiffre). Plus precisemment, dans l'instruction suivante : ActiveCell.FormulaR1C1 = "=Pilotage!R[25]C[1]" je veux remplacer le chiffre "25" par la variable Z_Li. J'ai essaye, mais le programme s'arrete : erreur 1004. Quelqu'un pourrait-il me renseigner sur la syntaxe a utiliser (ou sur la declaration de la variable "Z_Li") ?
2) Passage d'une adresse relative dans plusieurs onglets --------------------------------------------------------- Par la methode la plus simple: celle de l'enregistrement, j'ai ecrit une macro qui execute plusieurs operations dans plusieurs onglets. Toutefois pour me positionner sur la ligne desiree dans chacun des onglets, j'ai ete obligee d'intervenir manuellement dans la procedure Visual Basic. Est ce qu'il y avait un autre moyen pour passage d'adresse relative entre les onglets d'une maniere automatique ? Ci-dessous, je presente ma procedure.
3) Procedure d'insertion des groupes de ligne dans plusieurs onglets -------------------------------------------------------------------- J'ai marque entre signes d'interrogation les instructions qui ne marchent pas.
Sub Prc_insere_t33() ' ' Prc_insere_t3 Macro ' Macro enregistre le 17/12/2004 par lazar ' Dim Z_Ligne As Long Dim Z_Ligne_c As Integer Dim Z_Ligne_a As Integer Dim Z_Tache As Long Dim Z_Li As Integer
' --------------------------------------------------------------------------- ' Onglet Pilotage ' Insertion de 6 lignes et copie d'un ensemble de 6 lignes modele (de la fin du fichier) ' --------------------------------------------------------------------------- ' Z_Ligne = Application.InputBox("Cliquez sur une cellule", Type:=8).Row Z_Ligne = Selection.Row Z_Tache = ((Z_Ligne - 18) / 6) + 1 Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.End(xlToLeft).Select ActiveCell.FormulaR1C1 = "yyyyyy" Cells.Find(What:="xxxxxx", After:¬tiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate ActiveCell.Offset(3, 0).Range("A1").Select Selection.End(xlToLeft).Select ActiveCell.Rows("1:6").EntireRow.Select ActiveCell.Activate Selection.Copy ActiveCell.Offset(-2, 0).Range("A1").Select Cells.Find(What:="yyyyyy", After:¬tiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate ActiveCell.Rows("1:1").EntireRow.Select ActiveCell.Activate ActiveSheet.Paste Selection.End(xlToLeft).Select
' --------------------------------------------------------------------------- ' Onglet Cumuls ' Copie des 6 lignes precedentes et insertion au dessus ' --------------------------------------------------------------------------- Sheets("Cumuls").Select Application.Goto Reference:="R1C2" Z_Ligne_c = Z_Ligne + 1
' --------------------------------------------------------------------------- ' Onglet Avancement ' Insertion d'une ligne avec liens vers des cellules de l'onglet Pilotage ' --------------------------------------------------------------------------- Sheets("Avancement").Select Application.Goto Reference:="R1C1" Z_Ligne_a = Z_Tache + 2 Cells(Z_Ligne_a, 1).Activate ActiveCell.Offset(0, 0).Range("A1").Select Selection.EntireRow.Insert
' =========== > ' Premier lien ' ============ ' ???????????????????????????????????????????????????????????? ' Essai 1 - ca ne marche pas - erreur 1004 ' Z_Li = Z_Ligne - Z_Ligne_a ''??? ActiveCell.FormulaR1C1 = "=Pilotage!R[Z_Li]C[1]" ??????
' Essai 2 - ca marche a peu pres, mais sans liens ' ??? ActiveCell.FormulaR1C1 > ThisWorkbook.Sheets("Pilotage").Cells(Z_Ligne, 2) ?
' Essai 3 - cela marche - mais evidemment l'adresse n'est pas bonne ActiveCell.FormulaR1C1 = "=Pilotage!R[25]C[1]" ' ????????????????????????????????????????????????????????????
' ???????????????????????????????????????????????????????????? ' Essai 1 - ca ne marche pas - erreur 1004 ' Z_Li = Z_Li + 4 ''??? ActiveCell.FormulaR1C1 = "=Pilotage!R[Z_Li]C[4]" ??????
' Essai 2 - ca marche a peu pres, mais sans liens ' Z_Li = Z_Ligne + 4 ''??? ActiveCell.FormulaR1C1 > ThisWorkbook.Sheets("Pilotage").Cells(Z_Ligne, 5) ?
' Essai 3 - cela marche - mais evidemment l'adresse n'est pas bonne ActiveCell.FormulaR1C1 = "=Pilotage!R[29]C[4]" ' ????????????????????????????????????????????????????????????