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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| Public Cn As Object
Sub test()
Set Cn = OpenConnetion(ThisWorkbook.Path & "\Prénom.xlsx", True)
Dim T, FinPnom As Boolean
ThisWorkbook.Sheets("Feuil1").Range("B:E").Clear
Set r = ThisWorkbook.Sheets("Feuil1").Range("A1").CurrentRegion
For i = 2 To r.Rows.Count
FinPnom = False
T = Split(Application.Trim(r(i, 1).Text) & Space(10))
r(i, 1).Offset(0, 1) = T(0): r(i, 1).Offset(0, 2) = T(1)
For x = 2 To UBound(T)
If Trim("" & T(x)) = "" Then Exit For
If IsPrenom(Trim("" & T(x))) And Not FinPnom Then
If Trim("" & r(i, 1).Offset(0, 3)) = "" Then r(i, 1).Offset(0, 3) = T(x) Else r(i, 1).Offset(0, 3) = r(i, 1).Offset(0, 3) & "-" & T(x)
Else
FinPnom = True
If Trim("" & r(i, 1).Offset(0, 4)) = "" Then r(i, 1).Offset(0, 4) = T(x) Else r(i, 1).Offset(0, 4) = Trim(r(i, 1).Offset(0, 4)) & " " & T(x)
End If
Next
Next
End Sub
Public Function OpenConnetion(FichierXls As String, AvecTitre As Boolean) As Object
'ouvre la connexion au fichier Excel
'FichierXls non et chemin complet du fichier
'AvecTitre précise si la première ligne de l'onglet est les entête de colonnes ou pas
'rzutourne la connexion
On Error Resume Next
Dim HDR
If Dir(FichierXls) = "" Then MsgBox FichierXls & vbCrLf & "Pas trouvé": Exit Function ' versifie si le fichier existe
HDR = Array("No", "Yes")
Set OpenConnetion = CreateObject("ADODB.Connection") 'Instancie un objet adosb c'est mieux que d'utiliser le références
With OpenConnetion
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & FichierXls & ";Extended Properties=""Excel 12.0 Xml;HDR=" & HDR(Abs(AvecTitre)) & ";IMEX=1;"""
.Open
If Err Then
MsgBox Err.Description
Set OpenConnetion = Nothing
End If
Err.Clear
On Error GoTo 0
End With
End Function
Public Function OpenRecordSet(Sql, Cn As Object) As Object 'Retourne un recordset
'Retourne un RecordeSet
On Error Resume Next
Set OpenRecordSet = CreateObject("ADODB.Recordset")
OpenRecordSet.Open Sql, Cn, 1, 3 'ouvre un recordset sur la requête SQL pour la connexion en lecteur écriture et ajou dynamique
If Err Then
MsgBox Err.Description
Set OpenRecordSet = Nothing
End If
Err.Clear
On Error GoTo 0
End Function
Public Function IsPrenom(Pnm As String) As Boolean
Dim Rs As Object
Set Rs = OpenRecordSet("select * from [Prénom$] Where [Prénom]='" & Replace(Pnm, "'", "''") & "'", Cn)
IsPrenom = Not (Rs.EOF)
Rs.Close: Set Rs = Nothing
End Function |
Partager