VBA _ Définir plusieurs plages avec Range
Bonjour à tous,
Je vous écris car je bloque sur un sujet ... j'ai trouvé une "solution" mais je ne la trouve pas très pratique , bref peut être que quelqu'un va pouvoir me sauver :D
Donc, je souhaite sélectionner plusieurs colonnes et effectuer les mêmes actions pour ces colonnes. Seulement lorsque j'écris mon code, la macro s'applique à toutes les colonnes.
Je pense qu'il y a un pb avec Range mais je ne trouve pas ce qui cloche :
Range("M2:M" & "Q2:Q" & "T2:T" & Cells(Rows.Count, 1).End(xlUp).Row)Ci dessous mon code et ci joint mon fichier pour être plus claire ... :)
[ NB : j'ai plusieurs macro dans le fichier et le même pb partout ..:( , donc pour palier au problème j'ai réécris la même action pour chaque colonne ( expl : Sub b_CorrectioncaracteresA ) mais il doit y avoir plus intelligent à faire ... ]
Code initial
Sub c_Verification_caractere13()
Dim Cel As Range
Dim I As Integer
Dim char As String
For Each Cel In Range("M2:M" & Cells(Rows.Count, 1).End(xlUp).Row)
For I = 1 To Len(Cel)
If Not Len(Cel) = 13 Then
Cel.Interior.Color = RGB(255, 80, 80)
End If
Next
Next
End SubCode test qui ne fonctionne pas
Sub c_Verification_caractere13test()
Dim Cel As Range
Dim I As Integer
Dim char As String
For Each Cel In Range("M2:M" & "Q2:Q" & "T2:T" & Cells(Rows.Count, 1).End(xlUp).Row)
For I = 1 To Len(Cel)
If Not Len(Cel) = 13 Then
Cel.Interior.Color = RGB(255, 80, 80)
End If
Next
Next
End Sub
Merci de m'avoir lu bonne soirée !
A.
Bonjour
Essaie en remplaçant :
For Each Cel In Range("M2:M" & "Q2:Q" & "T2:T" & Cells(Rows.Count, 1).End(xlUp).Row)par :
Dim ligne&
ligne = Cells(Rows.Count, 1).End(xlUp).Row
For Each cell In Union(Range("M2:M" & ligne), Range("Q2:Q" & ligne), Range("T2:T" & ligne))
Bye !
Bonjour à tous,
ce qui me gène c'est le nom de ta proc Verification_caractere13
Si tu dois vérifier la présence de caractère 13 (CR) ce n'est pas ça, là tu contrôles si la longueur du mot > à 13 caractères
Pour contrôler la présence d'un caractère ça serait plutôt
Sub test()
Dim ch As String
ch = "abc" & Chr(13) & "def"
If InStr(ch, Chr(13)) > 0 Then
MsgBox "trouvé"
Else
MsgBox "non trouvé"
End If
ch = "abc" & "def"
End Suberic
Bonjour à tout les deux et à tout le forum ,
Désolée de répondre tardivement (petit pb de PC) et Merci d'avoir pris le temps de regarder mon problème.
GMB, cela fonctionne Merci beaucoup pour ton aide :D
Eric , le nom de ma proc n'est pas claire effectivement, je vais le modifier pour que cela porte moins à confusion...
Mon but est de compter le nombre de caractères supérieur à 13, et non le 13ème caractère. Et merci pour ta macro elle va m'être utile pour améliorer la mienne :)
Au cas ou cela intéresse quelqu'un d'autre je vous met le code en entier :
Sub c_Verification_longueurmot13()
Dim ligne&
Dim I As Integer
Dim char As String
ligne = Cells(Rows.Count, 1).End(xlUp).Row
For Each Cell In Union(Range("M2:M" & ligne), Range("Q2:Q" & ligne), Range("T2:T" & ligne))
For I = 1 To Len(Cell)
If Not Len(Cell) = 13 Then
Cell.Interior.Color = RGB(255, 80, 80)
End If
Next
Next
End SubMerci , et bonne journée à vous !
A.