Si vous imprimez l'adresse d'un objet Range dans VBA, il va imprimer l'adresse dans le bon ordre. Donc, si vous le passez à
A6:A5
, vous saurez que vous faites réellement référence à
A5:A6
.
Vous pouvez l'utiliser pour créer une UDF:
Edit:
j'ai mal compris la question. J'ai donc modifié ma réponse pour faire rectifier les erreurs.
Remarque: Ceci est essentiellement Michal réponse de Turczyn, réécrite sous la forme d'une UDF:
Function IS_RANGE_VALID(s As String) As Boolean
IS_RANGE_VALID = (Range(s).Rows.Count = 1 And Range(s).Columns.Count > 1)
End Function
Le résultat:
╔═══╦══════════╦═══════╗
║ ║ A ║ B ║
╠═══╬══════════╬═══════╣
║ 1 ║ A11:Z4 ║ FALSE ║
║ 2 ║ D8:H7 ║ FALSE ║
║ 3 ║ B112:H80 ║ FALSE ║
║ 4 ║ M5:P45 ║ FALSE ║
║ 5 ║ A5:A5 ║ FALSE ║
║ 6 ║ A11:Z11 ║ TRUE ║
║ 7 ║ D8:H8 ║ TRUE ║
║ 8 ║ A5:M5 ║ TRUE ║
╚═══╩══════════╩═══════╝
Remarque: Comme je vous ai demandé à le commentaire, pourquoi
M5:P45
est-il invalide? Si c'était une faute de frappe, alors cela devrait marcher pour vous. Sinon, vous devrez être plus clair sur le critère que vous utilisez pour déterminer la validité d'une plage.
Pourquoi «M5: P45» n'est-il pas valide? – Mahesh
La plage «A5, D5, G5: H5» est-elle censée être retournée comme valide ou invalide? C'est une rangée unique, et quatre colonnes différentes, donc en théorie répond à vos besoins. – YowE3K
@Mahesh Je ne veux que la même ligne, donc quand M5: P45 n'est pas valide. – KaviSuja