Sélectionner une cellule en fonction du nom d'une page

Bonjour à tous.

J'ai un dilemme que je n'arrive pas à résoudre. Je fini mon application GMAO et j'ai un souci de recopie de cellule dans un tableau.

J'ai un tableau source qui se nomme "Référents sites". Dans ce tableau j'ai 14 colonnes avec en A: Client, B:adresse, C: type d'installation... Jusqu'à N. J'ai ensuite des feuilles que je crée avec un tableau de bord intégrer à chaque feuille que je nomme "Nouveau client". Un code VBA me permet de copier un nouvelle feuille "Nouveau client", de la renommer en fonction du nom du client. Aucune feuille "Nouveau client" ne peut prendre un nom autre que ceux de la liste A: Client. Le souci que je rencontre est lorsque que je crée une nouvelle feuille client que je nomme par exemple "BNP", je souhaite que cinq valeurs dans 5 cellules puissent remonter vers le tableau référent automatiquement dés qu'elles changent de valeur. C'est a dire, dans ma feuille "BNP", ma cellule G17 qui est mon total d'heure effectuer en maintenance sur le site doit remonter dans le tableau dans la colonne M de la ligne correspondante au client. Je peux le faire manuellement mais tout se crée automatiquement dans mon application a part ce problème que je n'arrive pas à résoudre.

Private Sub Total_des_heures_client()

Sheets("Référents sites").Range(ActiveSheet.Range(B2)).Value.Offset(0, 13) = ActiveSheet.Range("G17").Value

End Sub
Je pensais que ce code me permettrait de renvoyer la valeur de la cellule "G17" dans le tableau de la feuille "Référents sites" sur la bonne ligne et dans la bonne colonne. Dans ce code, je voudrais que dans la feuille "référents sites", dans la cellule du même nom que ma feuille active dont le nom se trouve en B2, il se décale de 13 colonne et il remplace la valeur par celle de la cellule "G17" de ma feuille active.

Ca fait 5 jours que je cherche une solution et que rien ne fonctionne. Ce code me permettrai qu'a chaque fois que je crée une nouvelle feuille client, les cellules de la colonne M de ma feuille référents sites soient renseigner automatiquement.

Merci de votre attention.

Cordialement

Bonsoir

Peut être ceci ?

Sheets("Référents sites").Range("B2").Offset(0, 13) = ActiveSheet.Range("G17").Value

Cordialement

Bonjour,

Sans fichier, je suis pas sur de tout comprendre. rien que çà : "dans la cellule du même nom que ma feuille active dont le nom se trouve en B2"

Traduction svp ??? tu as donnés un nom à toutes tes cellules de destination dans la feuille "Référents sites" ?

et ce nom ce retrouve dans la feuille active en B2 ?

Ou alors en B2 c'est le titre d'une des colonnes de ton onglet "Référents sites" ?

Bonjour Dan.

J'ai essayé ce code mais si je mets Range ("B2") a la place de .Range(ActiveSheet.Range(B2)).Value il ira me sélectionner la cellule B2 de la feuille "Référents sites". Donc ce code ne marche pas non plus malheureusement.

Cordialement

Bonjour DJIL, Dan, Xmenpl,

Petite question :

Est-ce toi qui a fait le reste du code de ton application ?

Bonjour Xmenpl.

Le classeur est assez important en poid (14Mo). Je ne sais pas si je peux l'exporter. Je vais essayer d'être plus précis:

En B2 de chaque ActiveSheet, je récupère le nom de la feuille qui me sert également d'entête de feuille afin que les techniciens puissent savoir qu'il sont sur la feuille du bon client.

Private Sub Total_des_heures_client() 

Sheets("Référents sites").Range(ActiveSheet.Range(B2)).Value.Offset(0, 13) = ActiveSheet.Range("G17").Value 

End Sub

Sheets("référents sites") = Ma feuille source dans laquelle je souhaite faire remonter des infos

.Range(ActiveSheet.Range(B2)).Value = Je souhaite avec ce bout de code que le programme me sélectionne Range( feuille sur laquelle je suis.Range(Qui comporte le nom de ma feuille qui est égal au nom du client) et qu'il prenne cette valeur ).

.Value.Offset(0, 13) = Une fois que le code a retrouvé en colonne A dans la feuille "Référents sites" la même valeur que .Range(ActiveSheet.Range(B2)).Value, le code décale le range de 13 colonnes de la même ligne pour se retrouver en colonne M.

= ActiveSheet.Range("G17").Value = Le code prend la valeur de la feuille sur laquelle je suis en cellule "G17" pour la mettre dans la cellule de la colonne M correspondant au client souhaité.

Pour faire plus simple, disons que j'ai une feuille qui s'appelle "ALDES", mon code sera :

Private Sub Total_des_heures_client()

Sheets("Référents sites").Sheets("ALDES").Range(B2).Value.Offset(0, 13) = Sheets("ALDES").Range("G17").Value

End Sub

Ainsi, le code va sur la feuille référents sites, il prend la valeur B2 de la feuille "ALDES" (qui est ni plus ni moins que le nom du client), il retrouve le nom "ALDES" dans la colonne A de la feuille "Référents site", il se décale de 13 colonnes et écrit la valeur qui se trouve dans la feuille "ALDES" dans la cellule G17. Ainsi je peux écrire mon total d'heures effectuées pour ce client dans le tableau général.

Cordialement.

Bonjour Joyeuxnoel.

Oui j'ai fait tout le reste, il ne me manque plus que la remonter des heures de chaque feuille client vers le tableau de synthèse dans la feuille "référents sites" et il sera opérationnel.

Cordialement

Re,

Etrange, j'aurais pourtant presque pu jurer que si tu as vraiment passé 5 jours dessus, c'est que VBA ne te parlait pas du tout.

Je ne comprends malheureusement pas grand chose aux explications, je laisse Dan et Xmenpl te guider ;)

@ JoyeuxNoel,

J'utilise Excel depuis des années mais j'ai commencé à apprendre le VBA il y à 4 mois. Je n'apprends que ce dont j'ai besoin car je ne compte pas en faire mon métier . Je me suis acheté Code VBA pour les nuls puis avec des sites comme Excel-Pratique j'ai réussi à trouver énormément d'astuces qui m'ont beaucoup aidé. Le codage VBA me passionne de plus en plus. J'arrive de mieux en mieux à comprendre les macros, leur fonctionnement, mais il y a un grand nombre de fonction que je ne maitrise pas encore .J'ai réussi à programmer 95% de mon appli, les 5 % restant étant ce fichu code à écrire. Je peux le faire manuellement mais étant donné que tout est automatiquement créé sur mon appli, autant trouver le bon code qui me permettra de réussir à remonter les heures sur mon tableau général. Ça fait 5 jours que je recherche une explication sur cette fonction VBA. J'en ai essayé tellement qui n'ont pas fonctionner comme je le souhaitais.

Bien à vous.

Re,

.Value.Offset(0, 13) = Une fois que le code a retrouvé en colonne A dans la feuille "Référents sites" la même valeur que .Range(ActiveSheet.Range(B2)).Value, le code décale le range de 13 colonnes de la même ligne pour se retrouver en colonne M.

Je ne vois pas à quel moment il est question de la colonne A et comment il peut le savoir.

De ce que j'ai cru comprendre, tu auras besoin de lui donner 2 indications différentes pour arriver à tes fins.

Mais encore une fois, pas certain que tout soit très clair.

Bonjour

Oups désolé je n'avais pas suivi le fil

Pour faire plus simple, disons que j'ai une feuille qui s'appelle "ALDES", mon code sera :

Private Sub Total_des_heures_client()

Sheets("Référents sites").Sheets("ALDES").Range(B2).Value.Offset(0, 13) = Sheets("ALDES").Range("G17").Value

End Sub

Ainsi, le code va sur la feuille référents sites, il prend la valeur B2 de la feuille "ALDES" (qui est ni plus ni moins que le nom du client), il retrouve le nom "ALDES" dans la colonne A de la feuille "Référents site", il se décale de 13 colonnes et écrit la valeur qui se trouve dans la feuille "ALDES" dans la cellule G17. Ainsi je peux écrire mon total d'heures effectuées pour ce client dans le tableau général.

Le premier souci c'est que vous repostez déjà le code avec des erreurs. Range(B2), cela va bloquer à coup sûr --> C'est Range("B2"). Il faut les guillemets.

En fonction de vos dernières explications, essayez ceci :

Private Sub Total_des_heures_client()

Dim ligne As Integer
On Error Resume Next
With Sheets("Référents sites")
ligne = .Range("A:A").Find(Sheets("ALDES").Range("B2").Value, LookIn:=xlValues, lookat:=xlWhole).Row
If Err.Number = 0 Then .Range("M" & ligne).Value = Sheets("ALDES").Range("G17").Value
End With
End Sub

Le code va aller mettre la valeur de G17 de la feuille Aldes dans la colonne M de la feuille Référents sites

Cordialement

Bonjour a tous. La solution à été trouvée par un collègue qui l'utilise dans un de ses tableaux.

=SIERREUR(INDIRECT("'"&A6&"'!G17");"")

J'avais découvert la fonction indirect il y a peu de temps mais ne la maitrisant pas suffisamment je l'avais écarté. Du coup c'est formule est rentrée dans chaque cellule de ma colonne M de mon tableau "Référents sites" et compare les noms de chaque feuille avec la cellule en référence (ici A6). Lorsque il a trouvé que le nom de la Feuil8("ALDES") est égale à la valeur de la cellule A6 (ALDES) de mon tableau "référents sites" , il récupère la valeur de la cellule "G17" de la feuille "ALDES" et la recopie dans la case M6 ou a été rentré la formule.

C'était tellement simple... Passer 5 jours à chercher quelque chose dans des termes tordus .

Merci à tous d'avoir pris le temps de vous pencher sur mon problème.

Cordialement.

Rechercher des sujets similaires à "selectionner fonction nom page"