Comment appeler une cellule d'une autre feuille

fanjio Messages postés 7 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 12 mai 2009 - 5 juil. 2005 à 15:41
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 6 juil. 2005 à 05:30
Bonjour a tous!
Alors voila j'ai un petit probleme.
J'ai un classeur excel avec plusieurs feuille renommée
j'ai crée des indicateur de type feu rouge sur les feuilles, via un code.
Seulement j'ai des feu rouge un peu partout sur plusieurs feuille
et maintenant je voudrais maintenant creer une nouvelle feuille récapitulative
avec une vision globale de tous ces indicateurs.
comment faire le meme feu rouge avec les meme valeurs et couleur que celui qui se trouve sur une autre feuille.
les valeurs de référence appartenant à une autre feuille comment puis je faire pour lire et appeler ce données sur la feuille récapitulative.

Espérant que j'ai réussi à me faire comprendre.
Merci d'avance à tous ceux qui pourront me répondre.


2 réponses

ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
6 juil. 2005 à 05:30
En effet, de simples liaisons feront l'affaire!!! Et
pour ça, null besoins du VBA, une simple formule peut suffir à faire
ton bonheur!!!



Le mieux est de laisser Excel s'en charger pour toi... Donc, au lieu de
te donner la syntaxe je vais te donner le mode opératoire pour faire ce
genres de liaisons. Liaisons qui, je le rappele, fonctionne aussi entre
des feuilles de différents fichiers (et même si ces derniers sont
fermés!!! C'est pas merveilleux Excel franchement!!!). Donc, voici la
procédure à suivre :



Place-toi sur la feuille récapitulative dans la bonne cellule.

- Tape sur la touche "= ",

- puis, avec ta souris, clique sur la feuille source (celle contenant l'information à rapatrier),

- puis, une fois dans cette feuille, sélectionne, toujours avec ta
souris de préférence, la ou les cellules que tu veux utiliser.

- Après, contente-toi de valider en appuyant sur la touche "Enter" de ton clavier.



Maintenant, la cellule de ta feuille récape a pris la valeur de la
cellule "source". Tu as donc la formule qui doit ressembler, à peut de
chose près à ceci : =Feuil1!A1

Si tu as une somme a effectuer, tu peux, par exemple, mettre à la place de ceci :

=SOMME(A1:B2)

celà :


=SOMME(Feuil1!A1:B2)




Sinon, en VBA, comme l'as dit Lupus, il suffit de faire référence à la
cellule. Pour ce faire, déjà, tu dois préciser le classeur (fichier
ouvert) dont tu parles. Tu peux soit utiliser le classeur courant, soit
le classeur actif, soit le classeur intitulé machin :

ThisWorkbook <= Ce classeur

ActiveWorkbook <= Classeur actif (celui sélectionné)

Workbooks( index ) < = Index étant soit le numéro du
classeur selon l'ordre d'ouverture dans Excel (et donc, variable de
fois en fois!!!), soit le nom du fichier mis entre guillemets.



Le mieux, bien sûr étant d'utiliser "ThisWorkbook" !!!



Mais après il faut encore, un peu sur le même modèle, dire dans quelle feuille est notre cellule!!!

Worksheets(index) <= idem, soit le N° de la feuille [à partir de 1] soit son nom entre " nom "


Sheets(index) est identique au
précédent! Du moins, personnellement je n'ai jamais compris la
différence entre les deux (si quelqu'un la connait et peut
m'expliquer!?!?!?) !!!


ActiveSheet < = La feuille active (celle affichée)



Ensuite, il faut indiquer la cellule ou le groupe de cellule auquel tu
veux faire référence dans ton code. Pour ça il y a deux techniques
différentes :

Cells(X,Y) où X et Y sont des chiffres [Cells(1,1) = Cellule A1]

Cells ne te permet de ne selectionner qu'une seule cellule à la fois
contrairement à la technique suivante qui est cependant plus
contraignante!!!

Range("A1") Dans ce cas, il s'agit de texte... C'est d'ailleurs pour cela qu'il est mis entre guillements!

Donc, l'inconvénient de Range c'est lors de l'incrémentation
automatique de sa valeur... puisque c'est du texte, ça pose de sérieux
problèmes pour gérer facilement les colonnes!!!

En revanche on peut parfaitement gérer les lignes comme avec Cells() en faisant, par exemple, ceci :

Range("A" & CStr(numLigne)) CStr convertissant la variable
numérique "numLigne" en texte en autant les espaces (en fait, c'est
comme si tu mettais Trim(Str(nimLigne)) !!!).

Mais l'avantage de Range c'est de pouvoir faire référence à un groupe de cellules :

Range("A1:C3") !!!




Donc, pour faire référence à une cellule ou un groupe de cellule du peut écrire, par exemple, ceci :



ThiWorkbook.Woksheets("Feuil1").Cells(1,1)

ou encore


ThiWorkbook.Woksheets("Feuil1").Range("A1:C3")




Ensuite, l'objet Range a une propriété Value qui fait référence à la
valeur (par opposition à la formule) de la cellule. Donc, pour faire en
sorte qu'une cellule prenne la valeur d'une autre, il suffit de faire
comme ça :


ThiWorkbook.Woksheets("Feuil2").
Cells(1,1)
.Value
=
ThiWorkbook.Woksheets("Feuil1").
Cells(1,1).Value


(Note que comme la propriété Value est celle par défaut, on peut se passer de la mettre!!!)





Mais tu peux, bien évidemment faire des opérations arithmétique :


ThiWorkbook.Woksheets("Feuil2").
Cells(1,1)
=
ThiWorkbook.Woksheets("Feuil1").
Cells(1,1)
+
ThiWorkbook.Woksheets("Feuil1").
Cells(1,2)




Mais tu peux aussi utiliser la formule automatique de Excel mais en
l'inscrivant via le VBA!!! Héhé, ça c'est du vrai
schmiliblique!!!


ThiWorkbook.Woksheets("Feuil2").
Cells(1,1)
.Formula
= "=Somme(Feuil1!A1:C3)"






Est-ce que tout cela répond à ta question ou pas encore ???



Enjoy


( Si une réponse vous convient, cliquez sur le bouton "Réponse accéptée". )
6