Bonsoir,
Je travaille mon fichier à la maison sous excel 2003, ma macro fonctionne la plupart du temps mais a tout de même parfois un bug sur une ligne. Au travail avec excel 2007, cette ligne ne passe plus du tout! j'avoue que je ne trouve pas de solution.
Ci-dessous la ligne du délit en rouge. En essayant de la traduire en bon français, je recherche à mettre à jour les lignes où la valeur en colonne U est supérieure à 1, et où la 3eme, la 4ème, la 5eme et la 12ème colonne précedente sont vides.
Merci pour vos lumières!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 Sub MAJSalaire() Dim SheetReq As Worksheet, SheetBD As Worksheet, SheetMaJ As Worksheet Dim NumMois As Byte Dim ValeurReq As Variant Dim TheCell As Range, CellFind As Range Dim Matricule As String Dim i As Integer 'On pointe les différentes feuilles à l'aide de variables Set SheetReq = ThisWorkbook.Sheets("REquête") Set SheetBD = ThisWorkbook.Sheets("PREVISIONNEL") Set SheetMaJ = ThisWorkbook.Sheets("MAJmois") 'On va chercher nos infos NumMois = SheetMaJ.Range("C1") 'Formule visant à mettre en évidence les changements de salaire en cours d'année et 'à les modifier pour le restant de l'année 'On boucle sur les cellules contenues dans la colonne U For Each TheCell In SheetReq.Range("U2", SheetReq.Cells(SheetReq.Rows.Count, "U").End(xlUp)) 'On garde notre valeur en tête ValeurReq = TheCell.Offset(0, -2).Value 'On regarde si la cellule contient une valeur supérieur à 1 If TheCell > 1 And TheCell.Offset(0, -3) = 0 And TheCell.Offset(0, -4) = 0 And TheCell.Offset(0, -5) = 0 And TheCell.Offset(0, -12) = 0 Then 'On récupère le matricule (on regarde 11 colonnes en arrière pour voir la colonne A) Matricule = TheCell.Offset(0, -20) 'On recherche le matricule dans PREVISIONNEL Set CellFind = SheetBD.Columns("B").Find(Matricule, LookIn:=xlValues) 'On verifie si un matricule correspondant a été trouvé If Not CellFind Is Nothing Then 'On colle la valeur à sa place du mois étudié au mois de décembre For i = NumMois To 18 CellFind.Offset(0, i - 1) = ValeurReq Next i End If End If 'On passe à la cellule suivante Next End Sub
Partager