Ou est le problème dans le code VBA

Bonjour tout le monde

J’ai besoin de votre aide pour résoudre mon problème.

Voila il y a 3 semaine j’ai poste mon problème et avec la panne de mon pc j’ai un peu perdu le contacte mais malgré ça j’avais une réponse mais elle bloc.

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 »de mon classeur « GESTION DES CONGES ». Bien sûr a partir d’un autre classeur qui se trouve sur le même dossier par exemple : (C:\Users\PLAY\Desktop\dossier privé\GESTION DES CONGES.xlsm) et se classeur qui s’appelle (MISE A JOUR) :

(C:\Users\PLAY\Desktop\dossier privé\MISE A JOUR.xls)

Le classeur (MISE A JOUR) il contient une seul feuille « Feuil1» et la répartition de la feuille est la même avec ma feuille « PERSONNEL ».

Le but du code : qu’il recherche dans la feuille «Feuil1» 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.

La réponse que j’ai depuis ce forum :

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\Desktop\dossier privé\MISE A JOUR.xls "

'Initialisation
Set gestion_conge = ActiveWorkbook.Worksheets("PERSONNEL")
Set wkbo_maj = Workbooks.Open(chemin_fichier_maj, , True)
Set wksmaj = wkbo_maj.Worksheets("Feuil1")
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 Sub

mais il bloc sur la ligne:

Set wksmaj = wkbo_maj.Worksheets("Feuil1")

Ou est le problème dans le code SVP

Merci

41dossier-prive.rar (31.79 Ko)

Bonjour

Dans ton fichier fourni ("MISE A JOUR"), le nom de la page ("mise à jour")à une espace de trop à la fin

salut Banzai64

je voir pas l'espace on plus SVP plus des détailles

NB:: la mise a jour marche mais elle me donne un message d’erreur sur la ligne

Set wksmaj = wkbo_maj.Worksheets("mise à jour")

merci

Bonjour

Si ton instruction bloque là --> Set wksmaj = wkbo_maj.Worksheets("mise à jour")

Vérifie que l'espace dont Banzai te parle, ne se trouve pas dans le nom de ton onglet.

Pour éviter cela, enlève tous ces espaces ou remplace les par un --> _

Ex : mise_à_jour

Si ok, n'oublie de cliquer sur le V vert à coté du bouton EDITER pour cloturer le fil

Amicalement

Salut Dan

Mon problème est résolut par Bigdams mais merci

Rechercher des sujets similaires à "probleme code vba"