Besoin de conseil et d'aide pour du VBA

H4cR0 Messages postés 3 Date d'inscription vendredi 2 février 2018 Statut Membre Dernière intervention 14 février 2018 - Modifié le 14 févr. 2018 à 12:16
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 15 févr. 2018 à 01:59
Bonjour je suis débutant dans le Visual Basic et j'ai besoin d'aide et de conseil sur une macro.

Voila dans le cadre d'un stage, je dois créer une macro qui quand je met " absent " dans la feuille 1 à une date sur une ligne précise et un ID dans une colonne précise, que ça m'emmène a la feuille 2 et me propose de rentrer le type de congé a la même date et même ID auquel cela a été mis dans la feuille 1, et inversement lorsque quelque chose est mis dans la feuille 2, il faut que " absent " soit inscrit dans la même cellule Date = Date et ID = ID, sans trop utiliser de formule excel.

Pour l'instant mon problème est que je n'arrive pas a faire cette recherche de cellule avec la méthode find.
Est-ce que quelqu'un pourrais m'aider et me conseiller et est-ce qu'il existe une autre moyen, méthode de parvenir a ce résultat ?
Je me suis inspiré d'une macro déjà faite mais je n'arrive pas a mes fins
Je vous fais part de mon code et du fichier excel pour que ce sois plus clair pour vous.
Merci ^^'



Option Compare Text

Dim Absence
Dim FpChantier, FpConge As Worksheet
Dim matricule As Integer
Dim ab As String
Dim cell As Range
Dim i&, j&, ln&, dte As Date, n&, tc


Sub Worksheet_change(ByVal Target As Range)


Set FpConge = Sheets("Planning_Congé")
Set FpChantier = Sheets("Planning_chantier")

'si Absent est entré dans la cellule
'alors dans Planning congé
'entre le type d'absence dans planning congé

If Target = "Absent" Then

Worksheets("Planning_congé").Activate

'''
'recherche de la cellule correspondante au matricule et date
'''
matricule = FpChantier.Cells(5, Rows.Count).End(xlToLeft).Rows
For j = 6 To matricule - 4 Step 1
On Error Resume Next
ab = FpChantier.Cells(7, f).Value

If Err > 0 Then Exit For
Set cell = FpConge.Range("H7:AH750").Find(ab, lookat:=xlWhole)

If Not cell Is Nothing Then
tc = cell.Offset(0, 1).Select
n = InStr(2, cell.Offset(1, 0), " ")
dte = CDate(Mid(cell.Offset(1, 0), n + 1, 20))

For i = 7 To FpChantier.Range("C" & Rows.Count).End(xlUp).Row

If FpChantier.Range("C" & i) = dte Then
Exit For
End If

Next i
fp.Cells(i, j + 4) = tc.Select

End If
Next j

'''
'proposer congé
'''

Absence = InputBox("Type de congé ?")


Else
Exit Sub

End If

End Sub

2 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
14 févr. 2018 à 15:27
Bonjour,

Commence par enlever cette ligne
On Error Resume Next


Je pense que tu devrais avoir une erreur sur cette ligne, puisque f devrait être = 0
ab = FpChantier.Cells(7, f).Value


Si c'est la colonne F que tu vises, alors mets des guillemets autour...

0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié le 15 févr. 2018 à 02:00
Bonjour
Enormément (trop) de maladresses et fautes ...
A commencer par celle-ci ;
matricule = FpChantier.Cells(5, Rows.Count).End(xlToLeft).Rows

Je me suis inspiré d'une macro déjà faite mais je n'arrive pas a mes fins

n'est d'ailleurs pas exact. Une erreur est forcément dénoncée et tu ne nous en parles même pas ...

0
Rejoignez-nous