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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| 'fonction pour extraire partiellement du texte d'une cellule de la colonne D
'fonction n°1
Function extraire_partiel_Colonne_D(texto As String) As String
separe = Split(texto, "'")
extraire_partiel_Colonne_D = Right(separe(1), Len(separe(1)) - InStr(separe(1), "'"))
End Function
'fonction pour extraire partiellement du texte d'une cellule de la colonne A
'fonction n°2
Function extraire_partiel_Colonne_A(texto As String) As String
separe = Split(texto, "/")
extraire_partiel_Colonne_A = Right(separe(1), Len(separe(1)) - InStr(separe(1), " "))
End Function
Sub RechercheErreurNomDeProjet()
Static erreurNum As Integer
Dim ligne1 As Integer, erreurNum2 As Integer, numeroDeLigne As Integer
Dim nom As String, memeAdressePremCell As String, motRecherche As String
Dim feuilleErreur As Worksheet
Dim bFounded As Boolean
Dim laCell As Range
Worksheets("TestType").Activate
'on recherchera "PTE_Ref"
motRecherche = "PTE_Ref"
Set laCell = Worksheets("TestType").Columns("D").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
'extraction du nom du porjet de la cellule trouvé par appel à la fonction n°1
projetColonneD = extraire_partiel_Colonne_D(Range(laCell.Address))
Range(laCell.Address).Select
ligne1 = ActiveCell.Row
Range("A" & ligne1).Select
' Boucle tant que la cellule est vide, on remonte
Do While (IsEmpty(ActiveCell))
ActiveCell.Offset(-1, 0).Select
Loop
numeroDeLigne = ActiveCell.Row:
'extraction du nom du porjet de la cellule trouvé par appelle à la fonction n°2
projetColonneA = extraire_partiel_Colonne_A(Range("A" & numeroDeLigne))
'Boucle de test pour savoir si les deux projets ont le même nom
If projetColonneA = projetColonneD Then
Else
For Each page In ActiveWorkbook.Worksheets
If page.Name = "erreurs" Then
bFounded = True
Exit For
Else
'rien à faire
End If
Next
If Not bFounded Then
'J 'ajoute une feuille & je change le nom
Set feuilleErreur = Sheets.Add(After:=Sheets(Sheets.Count))
feuilleErreur.Name = "erreurs"
Else
'rien à faire puisque la page "erreur" a été trouvée
End If
erreurNum = erreurNum + 1
'---- ecrire dans la page erreurs; nom du projet; adresse colonne A; puis nom du projet; adresse colonne D
Range("A:D").WrapText = True
Worksheets("erreurs").Range("A" & erreurNum).Value = "Projet Colonne A " & projetColonneA
Worksheets("erreurs").Range("B" & erreurNum).Value = "A" & numeroDeLigne
Worksheets("erreurs").Range("C" & erreurNum).Value = "Projet Colonne D " & projetColonneD
Worksheets("erreurs").Range("D" & erreurNum).Value = "" & laCell.Address
Worksheets("TestType").Activate
Range(laCell.Address).Select
End If
'trouver la cellule suivante contenant le texte recherché
Set laCell = Worksheets("TestType").Columns("D").FindNext(laCell)
'boucler jusqu'à que l'on arrive à la dernière cellule
Loop Until laCell.Address = memeAdressePremCell
End If
End Sub |
Partager