J'essayais d'automatiser un fichier Excel comportant un titre dans les colonnes A et B. Je dois rechercher chaque mot de A dans B. Si un mot correspond, je dois le coller après la colonne B disponible (C, D, ...) au même rang.
J'utilisais le code ci-dessous pour lequel je vais séparer les mots manuellement dans une colonne séparée de la colonne A titre et les rechercher dans la colonne B.
Dim a() As String
Dim b() As String
Dim aRng As Range
Dim cel As Range
Dim i As Integer, t As Integer, clm As Integer
Set aRng = Range(Range("KW1"), Range("KW1").End(xlDown))
For Each cel In aRng
a = Split(cel, " ")
b = Split(cel.Offset(, 1), " ")
clm = 2
For i = LBound(a) To UBound(a)
For t = LBound(b) To UBound(b)
If UCase(a(i)) = UCase(b(t)) Then
cel.Offset(, clm) = a(i)
clm = clm + 1
End If
Next
Next
Next
mais il répète des mots en double encore et encore s'il y en a. Y a-t-il un moyen d'éviter les mots en double? Sil te plait aide moi.
Réponses:
Ce n'est pas vraiment la méthode la plus propre, mais vous pouvez simplement vérifier chaque cellule remplie en les parcourant en boucle à partir d'un décalage de 2 jusqu'à atteindre une cellule vide. Notez que ce code n'est pas testé.
la source
Do While True
instruction enFor clm = 2 to cel.EntireRow.Cells.Count
, modifiez l'Loop
instruction enNext
, remplacez les deuxExit Do
instructions parExit For
et supprimez l'clm = clm + 1
instruction.Sub percentage()
Dim a() As String Dim b() As String Dim aRng As Range Dim cel As Range Dim i As Integer, t As Integer, clm As Integer Set aRng = Range(Range("A1"), Range("A65536").End(xlDown))
For Each cel In aRng a = Split(cel, " ") b = Split(cel.Offset(, 1), " ") d = 0 clm = 2 C = UBound(a) If cel.Value <> "" Then For i = LBound(a) To UBound(a)
`MsgBox" Nombre total de mots "& C &" Mots correspondants "& d 'cel.Offset (0, 2) .Value = (d / c) End If Next
End Sub`
la source