VBA EXCEL validation cellule

JacquesRobb Messages postés 5 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 24 février 2010 - 22 févr. 2010 à 11:43
JacquesRobb Messages postés 5 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 24 février 2010 - 24 févr. 2010 à 11:33
Bonjour

Je souhaite valider une cellule en cliquant dessus, ceci pendant l'éxécution d'une macro,
avec application inputBox par exemple ( la cellule sera entourée d'un pointillé ),
Je n'y arrive pas. Invariablement, la seule cellule valide est celle
d'avant le lancemant de la macro.
Que dois-je faire
Merci à l'avance
Jacques

14 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
22 févr. 2010 à 14:51
Je ne pense pas que ça soit possible.
A mon avis, faut découper ta macro en deux :

La première macro exécute ton code et se termine en activant la cellule que tu souhaites (avec le cadre, la couleur qu'il faut, etc ...)

La deuxième macro se déclenche à la validation de la cellule (procédure Change ou SelectionChange de l'objet Worksheet, en surveillant que le paramètre target corresponde à la cellule qui t'intéresse.

Molenn
0
JacquesRobb Messages postés 5 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 24 février 2010
22 févr. 2010 à 15:30
Merci Molenn

J'ai bien peur que tu aies raison.
En fait, c'est en cours d'éxécution de la macro que je décide de valider telle ou telle cellule,
donc écrire : Range(...x ).Select ou Validate ne convient pas.

D'ailleurs, en règle générale, je crois que c'est très difficile de récupérer les coordonnées ( Row ; column ) d'une cellule non-active mais simplement entourée du pointillé
( je ne sais pas comment on appelle cet état ? )

En attendant, je reste à l'écoute.

Jacques
0
cs_pacadebord Messages postés 113 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 19 décembre 2011 2
22 févr. 2010 à 16:07
Bonjour,

J'ai trouvé ça sur le net :
Sub Macro1()
Dim maPlage As Range

    On Error Resume Next
    Set maPlage = Application.InputBox(Prompt:="Sélectionnez une cellule ou une plage", Type:=8)

    If maPlage Is Nothing Then

        Exit Sub
        
    Else

        'Traitement
        
    End If
       
End Sub

Pac
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
22 févr. 2010 à 16:11
Très difficile, non pas du tout. Par contre, est-ce que ça vaut vraiment le coup ? Je veux dire, ta cellule entourée de pointillés, il y a une condition qui fait qu'elle est dans cet état (sinon, je pense que tu connais déjà les coordonnées des cellules à contrôler). Le plus simple est sans doute de contrôler via macro les conditions plutôt que l'état final de la cellule. Enfin, ça dépend des fichiers et on en a trop peu pour le savoir.

Par contre, si tu veux vérifier l'état de ta cellule, il te suffit de faire une boucle qui défile toutes les cellules d'une plage donnée et tu vérifies que les bordures correspondent à ce que tu attends, quelque chose du style (écris à l'arrache et sans contrôle ^^)

for each Cell in Cells
If Cell.Borders(xlEdgeBottom).LineStyle = xlDash Then
'blabla
end if
Next cell

A toi de voir ce qui est le plus facile pour toi.

Molenn
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JacquesRobb Messages postés 5 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 24 février 2010
23 févr. 2010 à 11:20
A l'attention de Molenn et Placadebord,

Merci les gars pour vous intéresser à mon problème.
Bien que, pour l'instant je n'ai pas avancé beaucoup.

Je pense que je me suis mal exprimé au sujet des " pointillés entourant la cellule " : en fait, cet un état transitoire que l'on a quand on clique sur une cellule via " Application. InputBox ".

Molenn me demande si " ça vaut le coup ? " de me décarcasser : pas vraiment, j'utilise déjà une solution dégradée.
Par contre, je trouve impensable qu'un langage comme VBA, aussi puissant, ne permette pas de réaliser une action aussi banale que de valider une cellule, par un clic, pendant l'éxécution d'une macro!
Tu conviendras, Molenn, que ce serait une macro d'un autre niveau que la mienne, où je dois avoir sélectionné la cellule avant de lancer la macro ?

Si je ne vous fatigue pas trop, j'attends volontiers vos propositions.

Merci à l'avance
Jacques
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
23 févr. 2010 à 11:31
Tu peux donner ton code ? Ou une version simplifiée ?

J'avoue que j'ai un peu de mal à me représenter ce que tu veux faire. Je suis assez visuel en fait :)
Merci

Molenn
0
cs_pacadebord Messages postés 113 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 19 décembre 2011 2
23 févr. 2010 à 11:38
Pas mieux

Pac
0
jordane45 Messages postés 36599 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 décembre 2022 342
23 févr. 2010 à 13:28
Bonjour,
Pour réaliser une séléction de cellule, vous devez passer par la création d'un Userform et y insérer un control : RefEdit.
Vous obtiendrez ainsi la possibilité de sélectionner une cellule ou une plage de cellule comme vous le feriez dans une formule Excel.

J'éspère avoir répondu à votre question.

Cordialement,
Jordane,
0
JacquesRobb Messages postés 5 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 24 février 2010
23 févr. 2010 à 16:12
Bonjour Jordane

Votre suggestion m'intéresse, bien que je ne sache comment manier concrètement le " RefEdit " .
Complément d'infos :
( pour Molenn et Pacadebord aussi )

J'ai un tableau à 2 entrées ( 8 en X et 8 en Y ) Il s'agit de joueurs d'échecs devant jouer, tous contre tous.
Le but de la macro c'est d'éditer une fiche de match comprenant toutes les données des 2 joueurs choisis.
Exemple : je veux que le joueur 3 joue contre le N° 5
Je lance ma macro ; à l'invite, je clique dans la cellule d'intersection 3 ; 5 et la fiche de match est éditée .
Cette partie édition fonctionne déjà, à condition que je sélectionne cette fameuse cellule AVANT de démarrer la macro.
Donc, vous l'aurez compris, c'est la partie " Invite " qui pose problème puisque, visiblement il n'y a pas de " truc tout cuit "

Merci à l'avance pour d'éventuelles suggestions.

Jacques
0
cs_pacadebord Messages postés 113 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 19 décembre 2011 2
23 févr. 2010 à 19:22
JlacquesRobb,

C'est plus clair... Je pense que Molenn, en évoquant l'évênement "Worksheet_SelectionChange", a raison. Couplé à Application.Intersect pour ne prendre en compte le click QUE sur ton fameux tableau.

Pac
0
jordane45 Messages postés 36599 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 décembre 2022 342
23 févr. 2010 à 20:22
re-bonjour,
je vous ai préparé un classeur XL contenant un exemple d'utilisation du control refedit.

il est disponible ici :
http://www.cijoint.fr/cjlink.php?file=cj201002/cijQX561JR.xls

(en fait, dans l'éditeur de macro, j'ai inséré un Userform
dedans j'ai mis un control qui se nome RefEdit et un Bouton.)

J'espère que cela vous ira et n'hésitez pas si vous avez des questions à me les poser.

Jordane,
0
jordane45 Messages postés 36599 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 décembre 2022 342
23 févr. 2010 à 21:35
Re Re Re .. bonjour

Je me suis dis que vous n'étiez peut être pas obligé de passer par la feuille Excel pour faire votre sélection...

Vous pourriez avoir une représentation de vos 8 lignes 8 colonnes directement dans une fenêtre issue de votre code VBA (et oui... encore les userform)... ^^

Voici un petit exemple : http://www.cijoint.fr/cjlink.php?file=cj201002/cijrdZ8fIw.xls
en cliquant sur GO, une fenêtre s'ouvrira dans laquelle j'ai disposé des 'optionbutton' (boutons d'options).
Une fois un des bouton cliqué.. appuyé sur OK.. et le tour est joué.
PS: je n'ai nommé que les 2 premières rangées et vous ai expliqué dans le screen.. comment faire pour les autres.


PS2 : A la place des optionbutton.. vous pourriez tout aussi bien mettre simplement des boutons.. ou même des images..;etc.


Au passage, je me permet de vous conseiller d'aller sur un moteur de recherche et de taper les mots clé : "VBA EXCEL Userform )... vous obtiendrez des tutos sur le sujet.



Cordialement,
Jordane,
0
cs_pacadebord Messages postés 113 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 19 décembre 2011 2
24 févr. 2010 à 10:15
Ou bien avec l'évênement Worksheet_SelectionChange...
Exemple de fichier ici : http://www.cijoint.fr/cjlink.php?file=cj201002/cijR59NGzI.xls

Pac
0
JacquesRobb Messages postés 5 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 24 février 2010
24 févr. 2010 à 11:33
Salut Placadebord,

Merci pour ton programme.
C'est un bon début.

Malheureusement je nai pas pu visualiser le code, or, il faudra que je l'incorpore dans la macro existante.

Pour l'instant j'exploite une proposition de Jordane45, qui dores et déjà a résolu mon problème.
Merci encore à tous.

A l'attention du Webmaster : pour moi, ce sujet est clos.
Je suis très satisfait de ce forum et ne manquerai pas de vous recontacter si j'ai à nouveau des soucis ... Ce qui est inévitable, étant donné que je suis un piètre programmeur.
0