Mise à jour de ma feuille
Bonjour tout le monde
Je me demande aujourd’hui, est-il possible de faire la mise à jour de ma feuille « PERSONNEL »de mon classeur « GESTION DES CONGES ».
Je m’explique :
Voilà j’ai un classeur que j’ai créé avec l’aide de ce forum que je salut tout le monde de passage.
Mon classeur est fait pour les congés annuels du personnel c.-à-d. il calcule les congés des agents dans l’entreprise, mais ce calcule il se base sur la liste du personnel, qui peut ce change au file de temps (démission, retraite, …….).
Alors ma question : est-il possible de faire la mise à jour de ma feuille « PERSONNEL » bien sûr a partir d’un autre classeur qui se trouve sur le même répertoire et même dossier par exemple : (C:\Users\salim\Desktop\gestion des conges) et se classeur qui s’appelle (MISE A JOUR) il contient une seul feuille « mise à jour » et la répartition de la feuille est la même avec ma feuille « PERSONNEL ».
A noté que dans ma feuille sur la colonne A il y a les matricule qui sont unique et ne se répète pas c.-à-d. que chaque agent a sa propre matricule.
Le but du code : qu’il recherche dans la feuille « mise à jour » du classeur (MISE A JOUR) les nouveaux matricules qui ne se présente pas sur la feuille « PERSONNEL » du classeur (GESTION DES CONGES) et qu’il les ajoute ; après il me donne un message quoi que-il à ajouter telle et telle matricule
Nb : les matricules sont classe par ordre croissant.
MERCI A VOTRE AIDE
- Messages
- 358
- Excel
- 2003-2007 FR
- Inscrit
- 02/08/2011
- Emploi
- Consultant Test Performance / Audit
Salut,
A tester
Il faut modifier le chemin au prélable :
chemin_fichier_maj = "C:\Documents and Settings\7001107\Bureau\EXCEL\zving2\MISE A JOUR.xlsm"Private Sub CommandButton1_Click()
Dim wksmaj As Worksheet
Dim wkbo_maj As Workbook
Dim gestion_conge As Worksheet
Dim chemin_fichier_maj As String
Dim c As Range
Dim numligne, numlignemaj As Long
Dim log As String
log = "Matricule ajouté:" & vbCrLf
'A modifier
chemin_fichier_maj = "C:\Documents and Settings\7001107\Bureau\EXCEL\zving2\MISE A JOUR.xlsm"
'Initialisation
Set gestion_conge = ActiveWorkbook.Worksheets("PERSONNEL")
Set wkbo_maj = Workbooks.Open(chemin_fichier_maj, , True)
Set wksmaj = wkbo_maj.Worksheets("mise à jour")
numligne = gestion_conge.Range("A65536").End(xlUp).Row + 1
numlignemaj = wksmaj.Range("A65536").End(xlUp).Row + 1
'On fait la comparaison
For Each c In wksmaj.Range("A2", "A" & numlignemaj)
If gestion_conge.Range("A2", "A" & numligne).Find(c.Value) Is Nothing Then
log = log & c.Value & vbCrLf
wksmaj.Range(c.Address, c.Offset(0, 4)).Copy
gestion_conge.Range("A" & numligne, "E" & numligne).PasteSpecial
numligne = gestion_conge.Range("A65536").End(xlUp).Row + 1
End If
Next
'On trie les données
gestion_conge.Range("A1:E" & numligne).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'On ferme le fichier
wkbo_maj.Close False
gestion_conge.Range("A2").Select
MsgBox log
End SubDamien
merci pour votre réponse
mais il y a un erreur 'exécution 1004 sur la ligne
Set wkbo_maj = Workbooks.Open(chemin_fichier_maj, , True)
pourquoi !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
j'ai bien sur changer le chemin
chemin_fichier_maj = "C:\Documents and Settings\Administrateur\Bureau\zving\MISE A JOUR.xlsm"
et j'ai met les deux classeur dans le répertoire "zving" sur le Bureau mais ça fonctionne pas
a vous de m'aider
merci
- Messages
- 358
- Excel
- 2003-2007 FR
- Inscrit
- 02/08/2011
- Emploi
- Consultant Test Performance / Audit
Re,
Je ne vois pas le problème, es tu sûr que le fichier est présent ? Nom de fichier + extension ?
Re-essaye avec le fichier joint.
Essaye le fichier et dis moi ce que tu obtiens comme erreur, la même ?
Damien
salut Bigdams désolé pour le retard mais j'ai un probleme dans mon pc
une fois reglé j'essaye
merci et encore pardon
Salut Bigdams
Je suis de retour mais avec un autre pc le mien est on réparation
Alors j'ai essayé avec le fichier que tu ma envoyer mais malheureusement ça ne marche pas et il y a un message
« Run-time error ‘9’ :
Subscript out of range »
Mais la ligne suivante du code qui est en jaune
Set wksmaj = wkbo_maj.Worksheets("mise à jour")Je tien a préciser que les 2 fichiers sont dans le dossier « Nouveau dossier » et ils sont on « xls » et voila le code avec le chemin
Private Sub CommandButton1_Click()
Dim wksmaj As Worksheet
Dim wkbo_maj As Workbook
Dim gestion_conge As Worksheet
Dim chemin_fichier_maj As String
Dim C As Range
Dim numligne, numlignemaj As Long
Dim log As String
log = "Matricule ajouté:" & vbCrLf
'A modifier
chemin_fichier_maj = "C:\Users\PLAY\Downloads\Nouveau dossier\MISE A JOUR.xls"
'Initialisation
Set gestion_conge = ActiveWorkbook.Worksheets("PERSONNEL")
If Dir(chemin_fichier_maj) = "" Then
MsgBox "Fichier Non présent"
Exit Sub
End If
Set wkbo_maj = Workbooks.Open(chemin_fichier_maj, , True)
Set wksmaj = wkbo_maj.Worksheets("mise à jour")
numligne = gestion_conge.Range("A65536").End(xlUp).Row + 1
numlignemaj = wksmaj.Range("A65536").End(xlUp).Row + 1
'On fait la comparaison
For Each C In wksmaj.Range("A2", "A" & numlignemaj)
If gestion_conge.Range("A2", "A" & numligne).Find(C.Value) Is Nothing Then
log = log & C.Value & vbCrLf
wksmaj.Range(C.Address, C.Offset(0, 4)).Copy
gestion_conge.Range("A" & numligne, "E" & numligne).PasteSpecial
numligne = gestion_conge.Range("A65536").End(xlUp).Row + 1
End If
Next
'On trie les données
gestion_conge.Range("A1:E" & numligne).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'On ferme le fichier
wkbo_maj.Close False
gestion_conge.Range("A2").Select
MsgBox log
End SubS’il y a une erreur pierre de me corriger
faut'il que le classeur "MISE A JOUR" soit ouvré
- Messages
- 358
- Excel
- 2003-2007 FR
- Inscrit
- 02/08/2011
- Emploi
- Consultant Test Performance / Audit
Re,
Set wksmaj = wkbo_maj.Worksheets("mise à jour")
Mise à jour est le nom de l'onglet (feuille) si'il est différent il faut le modifier.
Comme il ne le trouve pas il te renvoi une erreur.
Damien
salut Bigdams
alors la mise a jour marche mais il y a aprés un message d'erreur su la ligne
Set wksmaj = wkbo_maj.Worksheets("mise à jour")
la feuille en question existe et bien nommer
merci
- Messages
- 358
- Excel
- 2003-2007 FR
- Inscrit
- 02/08/2011
- Emploi
- Consultant Test Performance / Audit
Re,
Je suspecte une fausse manip/un espace qui traine.....
Essaye avec le fichier joint (il te demande de selectionner le fichier + Onglet)
Rien a modifier dans le code.
Dis moi.
Damien
Salut Bigdams
Vraiment ça marche très bien merci merci merci
Une aider géniale de faire un UserForm tu ma faciliter la tache comme ça il me reste que de choisir le classeur ou qu’il soit
Bravo Bigdams