Prog Visual Basic "periodicité"

Prog Visual Basic "periodicité" - VB/VBA/VBS - Programmation

Marsh Posté le 20-04-2010 à 20:45:25    

Bonjour, je cherche à faire un programme de périodicité sur les 52 semaines dans un tableau sur Excel 2007 avec Visual Basic
 
Tout d'abord, comment faire pour ouvrir une boite de dialogue (UserForm) en cliquant sur une cellule.
 
Ensuite j'aimerais en fonction de la boite de dialogue déplacer cette cellule d'une semaine si tel choix est choisi dans la boite de dialogue ou si l'autre choix est choisi la cellule se déplace de X semaines.
 
En vous remerciant d'avance.
 
 

Reply

Marsh Posté le 20-04-2010 à 20:45:25   

Reply

Marsh Posté le 21-04-2010 à 12:45:59    

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
UserForm1.Show
 
End Sub
 
Dans Visual Basic Editor, à toi de créer une form depuis le menu Insertion -> userform
 
Voilà pour le début.

Reply

Marsh Posté le 21-04-2010 à 17:16:38    

Je te remercie mais je me suis débrouillé en faisant un rectangle et en créant une nouvelle macro par contre j'ai un autre problème,
 
j'ai un tableau et le programme que je fais en cliquant sur une cellule se fait sur une ligne, comment faire pour que le même programme se fasse sur les lignes suivantes ?
 
par exemples : je clique sur A1 :  "=A2 + A3" dans la cellule A4 qui se déplace ensuite de "A2" colonnes.
 
Les cellules de clique sont en colonne 1 et j'aimerais faire la même chose pour les lignes B, C, D etc...
 
Biensur le programme est plus compliqué mais c'est juste pour que je me fasse une idée sur la manière de procéder.
 
Merci.

Reply

Marsh Posté le 21-04-2010 à 19:22:21    

Hum ! Ce qui se conçoit bien s'énonce clairement...
 
Cliquer sur une cellule en VBA ça s'écrit comme ça :
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'on s'assure que le mec il a bien cliqué colonne 1
Set isect = Application.Intersect(Target, Columns(1))
If Not isect Is Nothing Then
    MsgBox "Vous avez cliqué ligne " & Target.Row
End If
End Sub
 
(macro à coller dans le private module de la feuille en question)
 
Pour le reste rien compris à ton problème.
A+
 
PS : Heu... ça sert à quoi qu'on te réponde si tu te débrouilles autrement ?

Reply

Marsh Posté le 22-04-2010 à 07:05:10    

hé bien tout simplement car je ne reste pas planté là à attendre une réponse non plus, je cherche de moi-même sur le logiciel.
 
sinon je te remercie pour le clique de cellule.
 
désolé si l'explication n'était pas très cohérente.
 
En fait après avoir cliqué sur la cellule A1 par exemple le programme que j'ai crée derrière s'execute sur une ligne (ici ligne 1)

Reply

Marsh Posté le 22-04-2010 à 07:08:18    


sorry, j'ai cliqué tros bas,
 
...et ensuite j'aimerais refaire le même programme en cliquant sur la cellule suivante (A2) auquel le programme s'effectuera sur la ligne 2.
 
Etc sur sur les autres lignes.
 
En espérant avoir été plus cohérent.
 
Merci

Reply

Marsh Posté le 22-04-2010 à 07:20:15    

Bonjour,  
Le programme que je t'ai donné te renvoie le N° de ligne :
Au lieu de renvoyer un MsgBox utilise le N° de ligne comme paramètre pour ta macro.
ça donne :
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'on s'assure que le mec il a bien cliqué colonne 1
Set isect = Application.Intersect(Target, Columns(1))
If Not isect Is Nothing Then
    MaBelleMacro Target.Row
End If
End Sub
 
Sub MaBelleMacro(i%)
MsgBox i
Cells(i, 4).Select
End Sub
 
A+

Reply

Marsh Posté le 27-04-2010 à 19:12:16    

Merci, désolé je suis un novice sur Visual Basic.
 
J'ai d'autres problème si quelqu'un peut m'aider ?
 
- Lorsque je suis sur la cellule active et que je met ma macro (ctrl X) je fais devenir la cellule en vert et lorsque je fais annuler sur ma boite de dialogue j'aimerais que la cellule redevienne de la couleur qu'elle était avant (beige 36).
J'ai essayé If Activecell.Interior.Colorindex: 7 then activecell.Interior.colorindex: 36 sachant que je fais deja Activecell.Interior.Colorindex: 7 lorsque la macro est lancé. mais ca ne fonctionne pas.
 
 
- Ensuite dans ma boite de dialogue j'aimerais mettre en texte dessus ce qu'il y a sur la cellule active. Lorsque j'en crée un il faut que je clique dessus, comment ne pas être obligé de cliquer?
 
- et enfin et il possible de lancer la boite de dialogue directement en cliquant sur la cellule et non pas en se mettant dessus et cliquer sur ctrl X.
 
 
En vous remerciant par avance.

Reply

Marsh Posté le 29-04-2010 à 07:21:55    

Personne n'a d'idée?
Merci d'avance

Reply

Marsh Posté le 03-05-2010 à 10:24:15    

Merci quand même, je me suis débrouillé et résolu mes problème avec l'aide d'autres personne.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed