Bonjour à tous,
Je débute en VBA.
Le code ci-dessous permet de comparer deux chaînes de caractères. Le problème est que en travaillant sur "Columns("A:Z")" toutes les lignes sont traitées alors que je travaille sur des données filtrées. J'ai essayé de nombreux autres codes incluant "SpecialCells(xlVisible)" mais aucun ne m'a permit de faire le traitement uniquement sur les données filtrées.
Je pensais avoir trouvé la solution en remplaçant "With Columns("A:Z")" par "With .AutoFilter.Filters" et le code "bug" sur la ligne qui est en rouge ! Pourquoi ???
Merci d'avance pour votre aide.
Bonne journée
Je débute en VBA.
Le code ci-dessous permet de comparer deux chaînes de caractères. Le problème est que en travaillant sur "Columns("A:Z")" toutes les lignes sont traitées alors que je travaille sur des données filtrées. J'ai essayé de nombreux autres codes incluant "SpecialCells(xlVisible)" mais aucun ne m'a permit de faire le traitement uniquement sur les données filtrées.
Je pensais avoir trouvé la solution en remplaçant "With Columns("A:Z")" par "With .AutoFilter.Filters" et le code "bug" sur la ligne qui est en rouge ! Pourquoi ???
Merci d'avance pour votre aide.
Bonne journée
VB:
[COLOR=rgb(65, 168, 95)]'DECLARATION et DEFINITION[/COLOR]
Dim dg As Worksheet
Set dg = ActiveWorkbook.Worksheets("donnees GRENIER")
Dim gOcr As Worksheet
Set gOcr = ActiveWorkbook.Worksheets("GRENIER_scan_OCR")
Dim phrase1 As Variant [COLOR=rgb(65, 168, 95)] 'Phrase de la ligne Ocr[/COLOR]
Dim phrase2 As Variant [COLOR=rgb(65, 168, 95)]'Phrase de la ligne dg[/COLOR]
Dim result1 As Range [COLOR=rgb(65, 168, 95)] 'Cellule d'affichage des résultats[/COLOR]
Dim dgLign As Integer [COLOR=rgb(65, 168, 95)]'Ligne de dg[/COLOR]
Dim gOcrLign As Integer [COLOR=rgb(65, 168, 95)]'Ligne de gOcr[/COLOR]
Dim dgDerLign As Integer '[COLOR=rgb(65, 168, 95)]Dernière ligne à traiter de dg[/COLOR]
Dim dgMot As Long
Dim gOcrMot As Long
Dim dgPremLign As Range
Dim numCBNMC As String
Dim dgDerCol As Integer
With .Columns("A:Z")
For dgLign = dgDerLign To 2 Step -1 [COLOR=rgb(65, 168, 95)]'boucle qui commence à partir de la fin[/COLOR]
dgDerCol = dg.Cells(dgLign, Columns.Count).End(xlToLeft).Column + 1 [COLOR=rgb(65, 168, 95)]'n° de la première colonne vide de la ligne[/COLOR]
[COLOR=rgb(226, 80, 65)][B] .Cells(dgLign, dgDerCol).Name = "result1"[/B][/COLOR]
phrase1 = Split(replacecar(.Cells(gOcrLign, 2)), " ") [COLOR=rgb(65, 168, 95)]'Découpage de la phrase en mot, après remplacement des caractères de ponctuation avec la fonction "replacecar"[/COLOR]
phrase2 = Split(replacecar(.Cells(dgLign, 4)), " ")
For gOcrMot = LBound(phrase1) To UBound(phrase1) [COLOR=rgb(65, 168, 95)]'Pour chaque mot de la phrase[/COLOR]
If phrase1(gOcrMot) <> "" Then
For dgMot = LBound(phrase2) To UBound(phrase2) [COLOR=rgb(65, 168, 95)]'Pour chaque mot de la phrase[/COLOR]
If phrase1(gOcrMot) = phrase2(dgMot) Then [COLOR=rgb(65, 168, 95)] 'Comparaison[/COLOR]
If Len(phrase1(gOcrMot)) > 3 Then[COLOR=rgb(65, 168, 95)] 'si le nombre de caractères est supérieur à 3[/COLOR]
.Range("result1").Value = phrase1(gOcrMot) + "_" + numCBNMC
.Range("result1").Offset(0, 1).Select
.Range("result1").Offset(0, 1).Hyperlinks.Add Anchor:=Selection, Address:="C:\Users\utilisateur\Documents\17_SCAN_HERBIER\06_TRAITEMENT_HERBIER_vba\SCAN_imag\" + numCBNMC + ".jpg", SubAddress:= _
"", TextToDisplay:=numCBNMC
.Range("result1").Offset(0, 1).Name = "result1"
End If
End If
Next dgMot
End If
Next gOcrMot
Next
End With [COLOR=rgb(65, 168, 95)]'Fin du traitement sur .Columns("A:Z")[/COLOR]