Rechercher si plage cellule contient 1 élément d'array
Bonjour,
J'ai fait un code mais j'ai du mal à le manipuler car il produit une erreur de type.
Ce que je souhaite faire :
rechercher cellule par cellule si celle-ci contient 1 des éléments de l'array.
savoir si les cellules 2-3-4-5-6- 8-9-10-11-12-13-14-15 de la ligne variable
contiennent au moins 1 lettre ou 1 chiffre (l'ensemble étant dans un array).
Mon code est lourd, mais j'ai chercher
Sub checkfin()
'désactiver macro événementielle'
Application.EnableEvents = False
'initialiser variable'
Dim DernLigne As Integer
DernLigne = Range("B1048576").End(xlUp).Row + 1
If Range("H1048576").End(xlUp).Row + 1 > DernLigne Then
DernLigne = Range("H1048576").End(xlUp).Row + 1
End If
'test de remise à zéro du format'
If cellulevide(DernLigne) = True Then
Range(Cells(DernLigne, 17), Cells(DernLigne, 23)).Select
Range(Cells(DernLigne, 17), Cells(DernLigne, 23)).Activate
Selection.ClearFormats
End If
Cells(7, 2).Select
'ACTIVER MACRO EVENEMENTIELLE'
Application.EnableEvents = True
'SAUVEGARDE AUTOMATIQUE'
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub
Function cellulevide(DernLigne As Integer) As Boolean
'initialisation variable'
Dim colonne As Integer
colonne = 2
cellulevide = True
Dim plage("A", "B", "C", "D", "E", "F", "G", "H", "I", _
"J", "K", "l", "M", "N", "O", "P", "Q", "R", _
"S", "T", "U", "V", "W", "X", "Y", "Z", "0", _
"1", "2", "3", "4", "5", "6", "7", "8", "9") As Variant
While colonne <= 15
If Not (colonne = 7) Then
If in_array(UCase(Cells(DernLigne, colonne).Value), plage) = True Then
cellulevide = False
colonne = 15
End If
End If
colonne = colonne + 1
Wend
End Function
Remerciement par avance
Bonsoir,
proposition de fonction qui retourne Vrai si la chaîne donnée en paramètre contient au moins un chiffre ou une lettre.
Function contchiflet(A)
If A Like "*[A-Z]*" Or A Like "*#*" Then contchiflet = True Else contchiflet = False
End Function
et intégrée dans ton code, cela pourrait donner ceci, à tester
Sub checkfin()
'désactiver macro événementielle'
Application.EnableEvents = False
'initialiser variable'
Dim DernLigne As Integer
DernLigne = Range("B1048576").End(xlUp).Row + 1
If Range("H1048576").End(xlUp).Row + 1 > DernLigne Then
DernLigne = Range("H1048576").End(xlUp).Row + 1
End If
'test de remise à zéro du format'
If cellulevide(DernLigne) = True Then
Range(Cells(DernLigne, 17), Cells(DernLigne, 23)).ClearFormats
End If
Cells(7, 2).Select
'ACTIVER MACRO EVENEMENTIELLE'
Application.EnableEvents = True
'SAUVEGARDE AUTOMATIQUE'
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub
Function cellulevide(DernLigne As Integer) As Boolean
'initialisation variable'
Dim colonne As Integer
colonne = 2
cellulevide = True
While colonne <= 15
If Not (colonne = 7) Then
If contchiflet(UCase(Cells(DernLigne, colonne).Value)) = True Then
cellulevide = False
Exit Function
End If
End If
colonne = colonne + 1
Wend
End Function
Function contchiflet(A)
If A Like "*[A-Z]*" Or A Like "*#*" Then contchiflet = True Else contchiflet = False
End Function
C'est parfait, pourrais-tu m'expliquer ta fonction contchiflet() stp, je ne la comprends pas, le "*#*" surtout, et je me prenais vraiment la tête, mais quand on ne sais pas on ne sais pas.
Merci
Bonjour,
la fonction utilise l'opérateur de comparaison "Like" qui permet de vérifier si une chaîne de caractères correspond à un modèle donné.
*[A-Z]* permet de vérifier si la chaîne de caractères contient une lettre de A-Z
*#* permet de vérifier si la chaîne de caractère contient un chiffre.
pour le reste je te renvoie à l'aide sur l'instruction "Like".