VBA Excel... besoin d'aide

chti bilout Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
chti bilout Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis débutant en VBA, j'ai une carte cliquable découpée en 95 zones et je souhaite qu'à chaque clique sur une zone, les données suivantes soient rajoutées sur une autre feuille, et organisées en ligne en utilisant des cellules différentes:
- N° de la zone cliqué
- Date
- Heure
- Initiales (juste un transfert de cellule puisque les initiales sont saisis au début d'utilisation de la carte)

Je souhaite intégrer Date et heure pour pouvoir supprimer les erreurs de double clique.

Autre problème, quand on clique sur une seconde zone, il faudrait que les nouvelles données passent à la ligne suivante

J'avouerais que je bloque sur pas mal de points, si quelqu'un pouvait au moins me guider, ça serait super sympa.

Mon but est aussi de comprendre et d'apprendre, donc merci de m'expliquer au cas ou

Bonne journée à tous

A voir également:

14 réponses

Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Salut,

Tu peux mettre un bout de ton fichier sans notes confidentielles que l'on voit sa structure, avec ce lien

https://www.cjoint.com/
0
chti bilout Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Salut, effectivement un fichier de ce que j'ai pu mettre en place est plus pratique pour comprendre ^^ désolé de ne pas y avoir pensé plus tôt !

Comme il y a pas mal de données confidentielles, j'ai repris une partie avec seulement 8 zones.

le lien :
https://www.cjoint.com/?BEnvakE87fX 


Pour ce qui est des zones, je souhaite qu'elles se colorient, puisque c'est un plan de travail par semaine cela évitera de les refaire. Par contre certaines sont à faire tous les jours, d'où la récupération des données. Et pour ce qui est des macros pour les colorier, je n'ai pas trouver d'autres solutions :// c'était un peu long à mettre en place, mais bon, ça a le mérite de fonctionner

Merci beaucoup
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

En résumé, sur ta feuille "Cartographie" lorsque tu fais un clic sur une zone elle se colorise,

Une fois colorisé, il est impossible de sortir la couleur (dans le cas de clic maladroit veux tu une possibilité de sortir la couleur !

que veux tu dire par "Je souhaite transférer à chaque clique le n° de la zone, les initiales, le véhicule, la date et l'heure (ce qui permet de virer les doublons)
" Lorsque tu clic sur une forme tu veux dans la forme les informations sélectionnées feuille "Accueil", c'est cela, ou lmes enregistrer sur la feuille Données !

j'imagine que tu souhaites ne pouvoir utiliser chaque donnée Collaborateur et véhicule qu'une fois, c'est cela !
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
chti bilout Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Re, merci pour ta rapidité ^^

Et bien si je supprime le doublon pour chaque forme, je n'arrive pas a faire fonctionner la macro :(

J'ai effectivement pensé à la possibilité d'enlever la couleur au cas ou il y aurait fausse manip, mais je ne vois pas comment !

pour ce qui est de "virer les doublons", c'est au cas ou il y a double clic, donc 2 lignes crées.

Mais le but est aussi d'établir des stats sur les fréquences ect...

En fait j'ai 15-20 "collaborateurs" qui vont travailler sur la même carte toute la semaine, mais jamais au même moment, donc le fichier sera sur serveur

sur la page accueil je rajouterais le bouton "suivant" pour aller sur l'onglet carte

Si je prends un exemple :

Le collaborateur 1 avec VHL 1 peux traiter les zones 1,5,7 le lundi matin
Le collaborateur 2 avec VHL 1 peux traiter la zone 3 le lundi après midi
Le collaborateur 1 avec VHL 2 peux traiter les zones 1,2,6 le mardi matin
Le collaborateur 3 avec VHL 1 peux traiter les zones 8 et 4 le mardi après midi
ect

Donc en gros ça donnerai une feuille données :
1 - AAA - 1 - 14/05/2012 - 8:05
5 - AAA - 1 - 14/05/2012 - 10:50
7 - AAA - 1 - 14/05/2012 - 11:23
3 - BBB - 1 - 14/05/2012 - 15:47
1 - AAA - 2 - 15/05/2012 - 9:30
2 - AAA - 2 - 15/05/2012 - 9:55
6 - AAA - 2 - 15/05/2012 - 11:40
8 - CCC - 1 - 15/05/2012 - 13:30
4 - CCC - 1 - 15/05/2012 - 16:45

Le tout dans des cellules différentes
0

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

Posez votre question
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Déjà pour la zone4 remplace la macro4 par ce code voir s'il te convient

Sub Zone4()
ActiveSheet.Shapes.Range(Array("Rectangle 7")).Select
If Selection.ShapeRange.Fill.ForeColor.RGB <> RGB(255, 255, 255) Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
Else
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(112, 48, 160)
End If
End Sub
0
chti bilout Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Re Mike

Merci pour tes premiers conseils, je viens donc de regarder cela avec intérêt.Du coup effectivement, je vire tous les doublons des zones :P
J'ai fais la modification sur mon fichier que je remets en ligne :
https://www.cjoint.com/?BEoa0KwvCGt 


J'ai rajouté le bouton suivant sur la première page ainsi que les commandes dans la macro pour inscrire les données à récupérer dans la feuille "données"

la macro1 est complète
seulement comment indiquer à la macro le changement de ligne à effectuer pour les prochains clics ?
Peut-être genre Rows n+1 ???
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Maintenant que j'ai cerné tes attentes voilà ce que je te propose
Transférer les données de la feuille Accueil sur la feuille Cartographie ce sera plus facile à gérer.
Dès que les trois cellules (date, nom et véhicule) sont renseignés, tu clic sur un secteur, une msgbox s'ouvre résumant les données, s'il y a confirmation les données sont transférées à la suite feuille Données et les 3 cellules (date, nom et véhicule) s'effacent pour une nouvelle saisie.

Es ce que cela te convient
0
chti bilout Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Re,
Et bien en fait,
pour expliquer, chaque collaborateur a un nombre de zone a traiter par jour, donc le "portail Accueil" éviterait de redemander les initiales et le noms du véhicule. de plus il peux y avoir d'autres interventions prioritaires, donc j'aurais travaillé sur un formulaire

Ensuite j'aurais travaillé sur le fait de mettre les bordure des zones à travailler par exemple le lundi d'une couleur plus flashies.

Exemple pour le lundi zones 1-12 , 40-44

donc quand on clic sur Date, d'office les zones concernées se mettraient en bordure jaune ou rouge, le reste serait orange
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Je ne t'ai pas oublié mais ce début de semaine à été chaud.
Récupère ton fichier et teste le sans te servir de la feuille Accueil, uniquement de la feuille Cartographie voir si on s'approche de tes attentes.
pour pouvoir préparer tes rendez vous je pense qu'il serait judicieux de prévoir des listes déroulantes pour les dates et heures. On en reparlera plus tard

https://www.cjoint.com/?BEqve2N5b3u
0
chti bilout Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Re, et Merci Mike

Tkt, je me doute que ça ne doit pas être évident ^^

Ca me plait bien le fait de valider l'envoi, ainsi que la demande si c'est un transfert de donnée ou un enlèvement de la couleur.

En fait il n'y a pas de rendez-vous, c'est un listing des tâches à faire par jour.Je me suis penché sur le fait de faire ressortir les zones à contrôler:


je récupère le jour de la semaine en fonction de la date:
=TEXTE(B3;"jjjj")
et ensuite je me lance dans des condition
Si cellule ='lundi' alors les bordures des zones 1,2 et3 sont jaunes ect...

ce qui donnerais :

If Cells(4, 8) = "lundi" Then
ActiveSheet.Shapes.Range(Array("Zone1", "Zone2", "Zone3")).Select
Application.WindowState = xlMaximized
With Selection.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 255, 0)
.Transparency = 0
End With
With Selection.ShapeRange.Line
.Visible = msoTrue
.Weight = 3
End With
End If
en continuant avec les autres zones, et en incluant les autres zones pour les remettre en orange....
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Je regarde ça mais il est possible de faire plus court.

Sub test()
If Weekday([A1]) = 1 Then
ActiveSheet.Shapes.Range(Array("Zone1", "Zone2", "Zone3")).Select
Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 255, 0)
End If
End Sub

Alors si Lundi les bordures sont jaune et les autres jours !

et les zones autres que 1, 2 et 3 !

Que ce soit des rendez vous ou des tâches à accomplir, tu les prépares d'avance avec plusieurs horaires, c'est pour cela que je mettrais des listes de validation en C2 et D2

as tu remarqué que le choix des zones en B2 est automatique.
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
chti bilout Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Re,
Je viens de passer plus de temps sur la macro que tu as développée !

Excellent !!
Le fait de définir une action et de l'appeler pour chaque clic de zone, je n'y avais pas pensé
(l'art de se compliquer la vie :/)

Pour les bordures de zone:
J'ai 95 zones, je dois d'abord donner la commande de mettre toutes les bordures en orange, puis de mettre les bordures des zones à traiter le jour J en jaune. C'est effectivement plus court comme tu l'a écrit ^^ Respect!!

J'ai remarqué pour B2 automatique, nikel !
Pour la validation des champs, on peux juste rajouter un bouton "envoi"
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

l'intérêt d'un code est sa simplicité, bien sur qu'il est possible d'ajouter un bouton pour l'envoi mais celui ci est déjà présent dans l'userform par transférer et dans le msgbox si tu confirmes l'envoi par Oui

par contre il est possible de créer un bouton pour tout réinitialiser, couleurs des shapes, bordures etc ...
il est possible de compléter le code pour ajouter la bordure jaune lorsque les données sont transférées sur la feuille Données. --
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
chti bilout Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

en fait pour effectuer l'envoi,il faut cliquer sur une nouvelle zone, c'est pour ça que je parlais d'un bouton "envoi"

Pour ma part je n'ai pas besoin d'un bouton pour réinitialiser, puisque je je fonctionnerais avec un fichier par semaine

Et pour le code pour ajouter la bordure des zones transférées, pour mon usage, je ne pense pas que ce soit utile.
0