Recherche sur le nom
Bonjour,
j'utilise la fonction Find pour une recherche sur le nom.
Si il y a deux fois le même nom, l'action ne s'effectue que sur le premier trouvé.
Pourriez-vous me donner les bons paramètres.
Ci -après le contenu de la macro.
D'avance merci
'
' crefich Macro
' création des fiches de distribution '
Application.ScreenUpdating = False
Sheets("Fiche").Select
ActiveSheet.Unprotect ("JP")
For f = 2 To Range("D" & Rows.Count).End(xlUp).Row
nom = Range("D" & f)
Set x = Range("D2:D601").Find(nom, , xlValues, xlWhole, , , False)
If x Is Nothing Then
GoTo fin
Else
imprim = x.Offset(0, -3).Value
If imprim = "OUI" Then
GoTo suite
Else
x.Offset(0, -3) = "OUI"
Carte = x.Offset(0, -2).Value
jour = x.Offset(0, -1).Value
nom = x.Offset(0, 0).Value
Prenom = x.Offset(0, 1).Value
Pers = x.Offset(0, 2).Value
Enf = x.Offset(0, 3).Value
Bébé = x.Offset(0, 4).Value
Min = x.Offset(0, 5).Value
Prov = x.Offset(0, 6).Value
If Pers = "0" Then
Pers = ""
End If
If Enf = "0" Then
Enf = ""
End If
If Bébé = "0" Then
Bébé = ""
End If
If Min = "0" Then
Min = ""
End If
If Prov = "0" Then
Prov = ""
End If
End If
End If
cre:
Workbooks.Open Filename:=ThisWorkbook.Path & "\fiche distrib.xlsx"
Sheets("Hiver").Select
Range("B1,F1,L1,N1,Q1,C2,P2,B3,G3").Select
Selection.ClearContents
Range("B1") = nom
Range("F1") = Prenom
Range("L1") = Carte
Range("N1") = jour
Range("Q1") = Pers
Range("C2") = Enf
Range("P2") = Bébé
Range("B3") = Min
Range("G3") = Prov
Windows("fiche distrib.xlsx").Activate
Sheets("Hiver").Select
Range("A1").Select
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
'ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & [nom] & ".xlsx"
Application.DisplayAlerts = False
ActiveWindow.Close
suite:
Next f
fin:
Sheets("Fiche").Select '
ActiveSheet.Protect ("JP")
Sheets("Accueil").Select '
End Sub
Bonjour,
Utilise la balise </> pour plus de lisibilité
Ci-après une fonction qui te permettra de déterminer la position
Function ici(plage As Range, valeur1 As Variant, valeur2 As Variant, decalage as Integer) As Range
With plage
ok = False
Set ici = .Find(valeur1, LookIn:=xlValues)
If Not ici Is Nothing Then
prem = ici.Address
Do
If ici.Offset(0, decalage) = valeur2 Then ok = True
If Not ok Then Set ici = .FindNext(ici)
Loop While Not ici Is Nothing And ici.Address <> prem And Not ok
End If
End With
End Functionplage = plage de recherche de la valeur1
valeur1= ce que l'on recherche en priorité
valeur2 = valur recherchée lorsque valeur1 a été trouvée
decalage = donne le nombre de colonnes entre la plage et la colonne où se trouverait la valeur2
Merci
je vais essayer d'adapter.
Bonne fin de journée