OVH Cloud OVH Cloud

cpoie de cellule

1 réponse
Avatar
Jean-Michel
Bonjour à tous

Je voudrais faire une copie de cellule se trouvant sur une autre Page
Je sais que la commande pour cela est : =sheet1!A1

J’ai un tableau de moyenne
Ce que je voudrais faire c’est changer le nom de la page mais pas la cellule
(ex pour la même cellule =Sheet1!A1 ou Sheet2!A1 ou etc.)
Pour cela g crée une liste avec tous les noms des pages (en G1)

Je voudrais faire cela sans macro car j’ai réalisé une fonction mais cela
met un certain temps à s’exécuter car j’ai 140 cellules à modifier

Voici le code de la fonction :
Entrée : page et la cellule à copier
Sortie : valeur de la cellule en question (la cellule étant du texte)

Public Function cop(page As String, cell As String) As String
cop = Sheets(page).Range(cell).Value
End Function

Cette solution fonctionne mais je voudrais classer le tableau et masquer
toutes les lignes vides
Donc j’ai crée une macro classement. Cette macro fonctionne.

Pour faire le classement je lance la macro dès que la valeur en G1 (nom de
la page) change

Pour activer cette macro j’ai fait
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$1" And Target <> "" Then
classement ' gestion du tableau de classement
End If
End Sub

Mais le problème c’est qu’il commence à faire le classement avant que les
données soient misent à jour.

merci d'avance
Jean-Michel

1 réponse

Avatar
papou
Bonjour
Regarde du côté de la fonction INDIRECT afin de construire ta formule en
faisant référence à une partie située en G1.
Par exemple :
=INDIRECT(G1 & "!A1")
(Dans l'hypothèse où tu as bien uniquement le nom de la feuille en G1)

Cordialement
Pascal

"Jean-Michel" a écrit dans le message
de news:
Bonjour à tous

Je voudrais faire une copie de cellule se trouvant sur une autre Page
Je sais que la commande pour cela est : =sheet1!A1

J'ai un tableau de moyenne
Ce que je voudrais faire c'est changer le nom de la page mais pas la
cellule
(ex pour la même cellule =Sheet1!A1 ou Sheet2!A1 ou etc.)
Pour cela g crée une liste avec tous les noms des pages (en G1)

Je voudrais faire cela sans macro car j'ai réalisé une fonction mais cela
met un certain temps à s'exécuter car j'ai 140 cellules à modifier

Voici le code de la fonction :
Entrée : page et la cellule à copier
Sortie : valeur de la cellule en question (la cellule étant du texte)

Public Function cop(page As String, cell As String) As String
cop = Sheets(page).Range(cell).Value
End Function

Cette solution fonctionne mais je voudrais classer le tableau et masquer
toutes les lignes vides
Donc j'ai crée une macro classement. Cette macro fonctionne.

Pour faire le classement je lance la macro dès que la valeur en G1 (nom de
la page) change

Pour activer cette macro j'ai fait
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$1" And Target <> "" Then
classement ' gestion du tableau de classement
End If
End Sub

Mais le problème c'est qu'il commence à faire le classement avant que les
données soient misent à jour.

merci d'avance
Jean-Michel