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

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

=ISREF(INDIRECT(A1)) 

mais en VBA, donc dans une macro.

Faut il utiliser une expression régulière?

Merci

Salut,

(même s'il fait plus d'une ligne), ce test fonctionne

Tape la valeur à tester dans la cellule A1.

Sub Try()
Dim aa As String, bb As Range

aa = Range("A1")

On Error GoTo 1
Set bb = Range(aa)
bb.Select
MsgBox "ok"
End

1 erreur
End Sub

Sub erreur()
MsgBox "erreur"
End Sub

Merci, 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...

Bonjour

Test sur la cellule sélectionnée avec VBA et MacroXL4

Cordialement

25classeur1.zip (8.47 Ko)

Wow merci Amadéus, je ne savais même pas que l'on pouvait programmer de cette façon avec des macro Excel 4!

Mais je préférerai que ce soit en VBA, car je suis en train de programmer en VBA actuellement et ce serait pour faire un test au sein de mon code.

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 !

remus69 a écrit :

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

    Sub Try()
    Dim aa As String, bb As Range 'dimensionne la variable aa en tant que texte et la variable bb en tant que plage

    aa = Range("A1")'attribue la valeur de la cellule A1 à la variable aa

    On Error GoTo 1 ' commande générale qui demande au programme d'aller directement à la ligne 1 s'il rencontre une erreur
    Set bb = Range(aa) 'attribue à la variable bb (qui doit être l'adresse d'une plage) la valeur aa
' si la variable aa contient une valeur qui peut représenter une adresse alors le script continuera sa lecture
'si la variable aa contient une valeur qui ne peut être celle d'une plage, alors le script considère qu'il s'agit d'une erreur
    bb.Select 'la variable aa contient une valeur qui peut être celle d'une plage.
'la plage aa est attribuée à la variable bb et bb est sélectionnée par le curseur
    MsgBox "ok" 'le message ok s'affiche
    End 'le script est terminé

    1 erreur'ligne 1 - la valeur contenue dans A1 ne peut représenter une plage - il n'était pas possible d'attribuer une valeur autre que
'celle d'une plage à la variable bb c'est donc une erreur qui envoie directement à la ligne 1.

'la ligne 1 appelle le sous programme erreur
    End Sub

    Sub erreur()'sous programme erreur
    MsgBox "erreur" 'alerte du message d'erreur 
    End Sub

j'espère que c'est une peu plus clair... le but de la manoeuvre est de dimensionner les variables et de voir si la valeur contenue dans A1 peut être affectée à une variable dimensionnée en tant que plage. si oui, c'est bon, sinon, c'est une erreur.

ok merci beaucoup, c'est bien plus clair.

On fait donc de la gestion d'erreur. Mais du coup, si je veux qqch du genre :

ElseIf Not (ISREF(INDIRECT(Position))) Then

MsgBox ("Veuillez entrer une véritable réference.")

Je peux faire comment?

remus69 a écrit :

Je peux faire comment?

je pense que ça devrait marcher si tu intègres la suite de ton code entre Msgbox "ok" (dont tu peux te débarrasser) et End

(ligne av 1 erreur)... à défaut d'une solution "moins lourde".

Rechercher des sujets similaires à "test valeur forme referenc"