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 62 63 64
| Option Explicit
'fonction pour extraire partiellement du texte d'une cellule de la colonne A ou D
'Colonne D: Sepd="'", Sepf="'" Colonne 1:Sepd="/", sepf=" "
Function Extraire_Partiel_Colonne(Texto As String, Sepd As String, Sepf As String) As String
Dim Separe
Separe = Split(Texto, Sepd)
If UBound(Separe) > 0 Then Extraire_Partiel_Colonne = Right(Separe(1), Len(Separe(1)) - InStr(Separe(1), Sepf))
End Function
Sub RechercheErreurNomDeProjet()
Dim FeuilleErreur As Worksheet
Dim memeAdressePremCell As String, motRecherche As String, projetColonneD As String, projetColonneA As String
Dim Ligne1 As Integer, NumeroDeLigne As Integer, erreurNum As Integer
Dim laCell As Range
Application.ScreenUpdating = False
On Error Resume Next
Set FeuilleErreur = Sheets("erreurs")
erreurNum = FeuilleErreur.Cells(Rows.Count, 1).End(xlUp).Row
On Error GoTo 0
If FeuilleErreur Is Nothing Then
Set FeuilleErreur = Sheets.Add(After:=Sheets(Sheets.Count))
FeuilleErreur.Name = "erreurs"
End If
Worksheets("TestType").Activate
'on recherchera "PTE_Ref"
motRecherche = "PTE_Ref"
With Worksheets("TestType").Columns("D")
Set laCell = .Find(motRecherche, , xlValues, xlPart)
If Not laCell Is Nothing Then
'mémoriser l'adresse de cette première cellule trouvée
memeAdressePremCell = laCell.Address
Do
If laCell.Value Like "*=*'*" Then
'extraction du nom du porjet de la cellule trouvé par appel à la fonction n°1
projetColonneD = Extraire_Partiel_Colonne(laCell.Value, "'", "'")
Ligne1 = laCell.Row
NumeroDeLigne = laCell.Offset(0, -3).End(xlUp).Row
'extraction du nom du porjet de la cellule trouvé par appelle à la fonction n°2
projetColonneA = Extraire_Partiel_Colonne(Worksheets("TestType").Range("A" & NumeroDeLigne), "/", " ")
'Boucle de test pour savoir si les deux projets ont le même nom
If UCase(projetColonneA) <> UCase(projetColonneD) Then
erreurNum = erreurNum + 1
'---- ecrire dans la page erreurs; nom du projet; adresse colonne A; puis nom du projet; adresse colonne D
With FeuilleErreur
.Range("A" & erreurNum).Value = "Projet Colonne A " & projetColonneA
.Range("B" & erreurNum).Value = "A" & NumeroDeLigne
.Range("C" & erreurNum).Value = "Projet Colonne D " & projetColonneD
.Range("D" & erreurNum).Value = "" & laCell.Address(0, 0)
.Range("A:D").WrapText = True
End With
End If
End If
'trouver la cellule suivante contenant le texte recherché
Set laCell = .FindNext(laCell)
'boucler jusqu'à que l'on arrive à la dernière cellule
Loop While Not laCell Is Nothing And laCell.Address <> memeAdressePremCell
End If
End With
Set FeuilleErreur = Nothing
End Sub |
Partager