Modification de données

  • Initiateur de la discussion GClaire
  • Date de début
G

GClaire

Guest
Salut a toutes et tous

J'utilise ce code pour modifier mes données du mois en cours :

Private Sub ChangerNourrice_Click()

Dim nomfeuil As String

nomfeuil = Application.WorksheetFunction. _
Index(Range("lesmois"), Month(Date))

Worksheets(nomfeuil).lblNomSalarie = Nom.Value
Worksheets(nomfeuil).lblAdresseSalarie = Adresse.Value
Worksheets(nomfeuil).lblCodePostalSalarie = CPostal.Value
Worksheets(nomfeuil).lblVilleSalarie = Ville.Value
Worksheets(nomfeuil).lblN°SecuSalarie = Secu.Value
Worksheets(nomfeuil).lblN°SecuSalarieCle = Cle.Value

Unload CoordonneesNourrice
Unload Coordonnees

MsgBox "Changement(s) effectué(s)", vbInformation, "Info"
End Sub

Et ce que j'aimerai, c'est que cela me modifie les mois qui suivent pour éviter de devoir faire cette modification sur les prochaines feuille

Mes feuilles sont nommées de cette maniere (Janvier, Février, Mars .......etc)

Je vous remercie d'avance, G'Claire
 
@

@+Thierry

Guest
Salut G'Claire, le Forum

J'avoue que j'ai du mal à comprendre la question, est-ce que je suis toutjours embrumé (voir Fil Macro conditionnelle sur "End Of Month") !!

D'abord,
Qu'est-ce donc => "lblNomSalarie" ? des Labels ActiveX sur Feuille ?
Mais je ne pense pas que VBA te les laisse nommer "lblN°SecuSalarieCle" (le °)

Ensuite,
Tu veux faire quoi ?
Tu as la même configuration sur toutes les Feuilles, et tu veux reporter les même infos, alors fais une boucle "For Each WS in WorkSheets" (çà tu sais faire non ?)

Enfin là je ne peux pas dire plus car tout m'échappe même le WorksheetFuntion.Index pour trouver le NomFeuil...

Si tu pouvais être un peu plus ....... Claire !!!

Bon Premier Mai à Tous et Toutes
@+Thierry
 
G

GClaire

Guest
@Thierry, le forum

Oui ce sont des labels dans des feuilles et ils sont bien nommés de cette manière, je n'ai pas eu d'erreur et les données sont bien envoyées dans la feuilles.

En fait c'est un UserForm pour envoyer des données dans des feuilles pour des salaire.

Suivant le mois que nous sommes, il envoie les données dans la feuille du mois.

Dim nomfeuil As String

nomfeuil = Application.WorksheetFunction. _
Index(Range("lesmois"), Month(Date))

Worksheets(nomfeuil).lblNomSalarie = Nom.Value

Et dans une feuille J'ai une liste des mois qui se nomme : Lesmois

Si nous sommes au mois de Février il modifiera les données de la feuille du mois de février.

Ce que j'aimerai c'est :

Si nous sommes au mois de Février, que cela me modifie les données dans la feuille du mois de février, mais aussi celles des mois qui suivent, de Mars a Décembre

J'espère être plus Claire, merci de ton intervention, G'Claire
 
@

@+Thierry

Guest
Bonsoir G'Claire, le Forum

Oui j'ai mieux compris, par contre je n'ai pas refait ton histoire de WorksheetFunction.Index sur une feuille où se trouve les mois...(un peu tiré par les cheveux çà, enfin...) Mais j'ai utilisé un Contrôle Calendar 8.0 pour figurer le principe.

Idem je n'écris pas dans des label de Feuille, mais dans des cellules. Je pense que ce que tu cherches ce n'est pas là mais donc comment trouver le moyen d'écrire dans les feuilles mensuelles à partir d'une date précise...

Donc je te laisse voir, c'est simple, je passe par l'index de feuille ce qui subordonne un certain ordre dans ton classeur par contre.

Voilà et comme le truc c'est à partir d'une certaine date...

Aujourd'hui c'est le 1er Mai, bien sûr il y a le traditionel muguet, mais aussi aujourd'hui nous accueillons 10 nouveaux pays amis auquels je souhaite la bienvenue !



@+Thierry
 

Pièces jointes

  • USF-Euro-Feuilles.zip
    19.6 KB · Affichages: 20
G

GClaire

Guest
@Thierry, le forum

Merci @Thierry pour ta démo.

J'ai essayer de comprendre un peu ce que tu avait fait et de l'adapter a mon cas (Car je voudrais éviter de passer par un controle calendar).

Mais cela ne fonctionne pas trés bien (Tu t'en aurais douté, je pense,lol).

Les modifications se font assez aléatoirement, et je n'arrive pas a comprendre pourquoi.

Si tu as un peu de temps pour y jeter un coup d'oeil.

Je te remercie par avance, et bon Dimanche,G'Claire
 

Pièces jointes

  • Payes_2004_XLD.zip
    38.7 KB · Affichages: 24
@

@+Thierry

Guest
Bonjour G'claire

Le contrôle Calendar n'était pas là pour que tu l'utilises mais pour que cette démo fonctionne et pour faire des essaie sur des dates différentes facilement sans avoir à en saisir, c'est tout.

Tu n'es pas loin mais tu n'as pas lu cette phrase dans mon post d'hier :

"Donc je te laisse voir, c'est simple, je passe par l'index de feuille ce qui subordonne un certain ordre dans ton classeur par contre."

En fait ceci => "TheNum = CByte(Month(Date))" converti la date système actuelle en un nombre de 1 à 12 (aujourd'hui le 5 si l'horloge de ton PC est bien réglèe)

Le "TheNum" va être utilisé en index de Feuille. (voir aide à Worksheet, objet)

Et ensuite ceci => "For i = TheNum To 12" va donverti boucler à partir de "TheNum" (donc 5 pour aujourd'hui) jusqu'à 12...

Donc tel que je vois ton fichier, si on fait tourner tel quel, on va écrire d'Avril à Novembre.... Comprends-tu pourquoi ?

Le fait que tu utilises un Label pour retourner l'info sur chaque feuille te masque un peu le problème, mais si tu écrivais sur une Range, tu aurais un retour d'info sur la feuille "Menu" aussi... Comprends-tu pourquoi ?

Mais oui, tu as compris !! il y a un décalage car la feuille Menu n'est pas à sa place !!! (ou bien tu gère ce décalage sur TheNum)

Sinon, en passant, ton tableau de mois ne sert strictement à rien !! La preuve remplace ton initialisation du UserForm par celle-ci :

Private Sub UserForm_Initialize()
Dim TheNum As Byte

TheNum = CByte(Month(Date))

Nom = Worksheets(TheNum).lblNomSalarie
Adresse = Worksheets(TheNum).lblAdresseSalarie
CPostal = Worksheets(TheNum).lblCodePostalSalarie
Ville = Worksheets(TheNum).lblVilleSalarie

End Sub

Bon Dimanche G'Claire et le Forum
@+Thierry


PS 1 = Dans ce cas là (sans calendar), inutile aussi de Déclaration Dim TheNum et Dim TheDate Public niveau Module car il n'y a pas d'appel de ces variables inter-procédure.

PS 2 = Dans ce cas là aussi Dim TheDate peut être carrément supprimée, ainsi que son initialisation ("TheDate = Month(Date)") puisque non-utilisée.

PS 3 = Si tu veux avoir confirmation écrite réélle de la feuille de départ (vérification décalage) écrit plutôt ceci :

MsgBox "Les données seront modifié de : " & (Worksheets(TheNum).Name) & " à " & (Worksheets(12).Name)

A la place de :
MsgBox "Les données seront modifié de : " & Format(Date, "MMMM") & " à Décembre"

BYe BYe
 

Statistiques des forums

Discussions
312 393
Messages
2 087 967
Membres
103 688
dernier inscrit
Amadou