Test si valeur d'une cellule est de la forme d'une référence de cellule

  • Initiateur de la discussion Initiateur de la discussion remus69
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

remus69

Guest
Bonjour,

J'aimerais simplement savoir comment tester si la valeur d'une cellule (par exemple en A1) est de la forme d'une adresse de cellule (par exemple B4, B5, C67, etc.).

J'aimerais faire comme avec
Code:
=ISREF(INDIRECT(A1))
mais en VBA, donc dans une macro.

Faut il utiliser une expression régulière?

Merci
 
Re : Test si valeur d'une cellule est de la forme d'une référence de cellule

Bonjour,

regarde ceci :
Code:
Dim c As Range
On Error Resume Next
Set c = Range(ActiveCell.Value)
On Error GoTo 0
If Not c Is Nothing Then MsgBox c.Address

bonne soirée
@+
 
Re : Test si valeur d'une cellule est de la forme d'une référence de cellule

Bonjour,
Faut il utiliser une expression régulière?
C'est effectivement une possibilité, mais un motif opérationnel demande à être bien défini si tu veux que ta fonction soit compatible sur différentes versions.
Comme la plage de cellules peut différer en fonction de la version d'Excel, je pense qu'il te faudra définir différents motifs.
Il te faudra donc dans un premier temps déterminer la version Excel de l'utilisateur, puis déterminer le motif en fonction (utiliser un SelectCase par exemple et un motif par cas).
Pour les versions 2007 et 2010 cela donne : de 1 à 3 caractère alphabétiques en majuscule couvrant la plage A à XFD (pas au-delà) suivi d'un nombre allant de 1 à 1048576. La chaîne de caractères ne doit comporter que ces données et rien de plus.
A+

Edit : salut Pierrot🙂...arf trop forte la panthère !
 
Dernière édition:
Re : Test si valeur d'une cellule est de la forme d'une référence de cellule

Merci Pierrot93, effectivement ça marche! 🙂

Je viens de commencer à faire des macros, et pour le moment, j'ai rien compris à ton code! ^^

Je ne connais qu'un peu le php.

Où est la ligne qui teste si le contenu de la cellule est de la forme d'une adresse de cellule?

Car j'aimerais faire ce test dans un if dans un autre programme...

En gros, j'aimerais bien qqch du genre :

ElseIf Not (ISREF(INDIRECT(Position))) Then
MsgBox ("Veuillez entrer une véritable réference.")

mais en véritable syntaxe VBA !
 
Dernière modification par un modérateur:
Re : Test si valeur d'une cellule est de la forme d'une référence de cellule

Bonsoir le fil, bonsoir le forum,

Je me permets de répondre à la place de Pierrot et j'espère que ça va bien l'énerver, autant qu'il m'a énervé lui-même avec sa réponse si simple et si géniale...

Set c = Range(ActiveCell.Value) définit une variable de type Range (cellule ou plage de cellules)
si le contenu de la cellule active ne correspond ni à une plage nommée ni à une adresse de cellule ou de plage de cellule, cela va automatiquement généré une erreur.
La ligne juste au dessus : On Error Resume Next indique qu'en cas d'erreur il faut passer outre et lire la ligne suivante (c'est la gestion des erreurs)
La ligne suivante dit : On Erroro Goto 0 qui signifie que la gestion des erreur est annulée. Ensuite le message Indique l'adresse indiquée dans la cellule active.
Si tu dois boucler sur plusieur cellules (par exemple la plage A1:A51), on pourrait adapter le code de Pierrot ainsi :
Code:
Dim pl As Range
Dim cel As Range
Dim c As Range

Set pl = Range(A1:A51")
For Each cel in pl
     On Error Resume Next
     set c = Range(cel.Value)
     If Err <> 0 Then
          Err = 0
          MsgBox ("Veuillez entrer une véritable réference.")
          cel.Select
          Exit Sub
     End If
     On Error GoTo 0
Next cel
Mais il faudrait relancer la macro autant de fois qu'il y a d'erreurs...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
310
W
Réponses
17
Affichages
566
Retour