Besoin de conseil et d'aide pour du VBA

H4cR0 3 Messages postés vendredi 2 février 2018Date d'inscription 14 février 2018 Dernière intervention - 14 févr. 2018 à 12:12 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention
- 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

Afficher la suite 

Votre réponse

2 réponses

cs_MPi 3863 Messages postés mardi 19 mars 2002Date d'inscription 13 mars 2018 Dernière intervention - 14 févr. 2018 à 15:27
0
Utile
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...

Commenter la réponse de cs_MPi
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 15/02/2018 à 02:00
0
Utile
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 ...

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.