VBA / Macro pour mise à jour de cellules

Bonjour à tous.

Jeune padawan sous Excel (ou plutôt VBA), je cherche une solution pour mettre a jour de manière automatique (via un bouton à cliquer par exemple) des cellules d'une fiche (onglet) par rapport à des cellules sur un tableau.

Pour faire simple j'ai créé un tableau excel synthétisant une flotte de véhicules que je dois gérer, et j'ai créé une fiche suivi type (pour gérer la partie technique). Je me suis d'ailleurs passablement aidé de fichiers ou solutions proposées ici. Par contre je séche pour le reste. En effet, je veux que les valeurs renseignées dans le tableau général se mettent à jour aussi dans chaque fiche.

Je veux faire cela car j'ai plusieurs sites à gérer et les personnes qui utilisent ces véhicules, pour certaines, ne connaissent pas excel. Je veux leur faciliter la tache et que cela soit automatisé. Je vous joins le fichier ce sera plus parlant.

Un grand merci aux spécialistes qui prendront le temps de m'aider ou de me répondre.

nota: merci de ne pas supprimer les macros existantes dans ce fichier (toutes me servent...)

Salut,

Je télécharge et regarde ça

Girodo

J'ai oublié de préciser que dans l'exemple, le tableau ne comporte qu'une ligne. Et qu'une fois, complétée, ce sera environ une 50aine (de véhicules) et donc d'onglets respectifs (fiche technique).

On peut aussi imaginer au moment de la fermeture du classeur, une fenêtre automatique (à la place d'un bouton) nous invitant à mettre a jour les données?

Salut,

Pour ma part j'ai préféré une macro qui enregistre directement les données dans la fiche à chaque modif.

A toi de me dire si ça fonctionne comme souhaité.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'Macro s'éxécutant à chaque mise à jour dans la feuille PARC VEHICULE

Dim Plaque As String
'Pour chaque valeur présente en A5:A...
For Ligne = 5 To Sheets("PARC VEHICULE").Range("A" & Rows.Count).End(xlUp).Row
Plaque = Sheets("PARC VEHICULE").Cells(Ligne, 1).Value
'Si la case n'est pas vide...
If Plaque <> "" Then

'Mise à jour de la marque
Sheets(Plaque).Cells(4, 2).Value = Sheets("PARC VEHICULE").Cells(Ligne, 2).Value
'Mise à jour du modèle
Sheets(Plaque).Cells(5, 2).Value = Sheets("PARC VEHICULE").Cells(Ligne, 3).Value
'Mise à jour de l'affectation
Sheets(Plaque).Cells(7, 2).Value = Sheets("PARC VEHICULE").Cells(Ligne, 4).Value
'Mise à jour de la date de relève
Sheets(Plaque).Cells(9, 2).Value = Sheets("PARC VEHICULE").Cells(Ligne, 5).Value
'Mise à jour du kilométrage relevé
Sheets(Plaque).Cells(8, 2).Value = Sheets("PARC VEHICULE").Cells(Ligne, 6).Value
'Mise à jour de la date de mise en service
Sheets(Plaque).Cells(4, 6).Value = Sheets("PARC VEHICULE").Cells(Ligne, 7).Value
'Mise à jour du prochain CT
Sheets(Plaque).Cells(12, 2).Value = Sheets("PARC VEHICULE").Cells(Ligne, 8).Value
'Mise à jour de la date prochaine révision
Sheets(Plaque).Cells(12, 7).Value = Sheets("PARC VEHICULE").Cells(Ligne, 9).Value
'Mise à jour du kilométrage prochaine révision
Sheets(Plaque).Cells(12, 6).Value = Sheets("PARC VEHICULE").Cells(Ligne, 10).Value
'Mise à jour du contrat entretien
Sheets(Plaque).Cells(6, 6).Value = Sheets("PARC VEHICULE").Cells(Ligne, 11).Value
'Mise à jour du Propriétaire/Locataire
Sheets(Plaque).Cells(5, 6).Value = Sheets("PARC VEHICULE").Cells(Ligne, 12).Value

End If
Next
End Sub

Girodo

Salut Shine, Girodo,

Bonsoir le forum,

le cœur de ta demande se résume ainsi 8)

    iRow = Choose(Target.Column, 6, 4, 5, 7, 9, 8, 4, 12, 12, 12, 6, 5)
    iCol = Choose(Target.Column, 2, 2, 2, 2, 2, 2, 6, 2, 7, 6, 6, 6)
    Worksheets(CStr(Cells(Target.Row, 1))).Cells(iRow, iCol) = Target

J'en ai fait un peu plus (je peux rarement m'en empêcher )

  • évidemment, retranscription immédiate des données dans la feuille concernée ;
  • en [E] (MAJ du kilométrage), par défaut, la date du jour s'inscrit ;
  • en [H] (prochain CT) et [I] (prochaine révision), par défaut, la date affichée s'incrémente d'un an et la sélection passe au kilométrage (pour [I]).
Si tu t'es trompé, pour retirer une année, clic-droit sur ces dates.

Pour ces deux dates, il y a encore moyen de finasser, selon que l'on sache au départ l'intervalle entre ces opérations, pour calculer la bonne date tout de suite.

Pareil avec le kilométrage de révision.

  • si les kilomètres (révision) sont inférieurs au total en [E], affichage d'un avertissement d'incohérence ;
  • en cliquant en [A], tu passes directement sur la fiche concernée ;
  • tu peux créer une nouvelle fiche en cliquant la première cellule vide en [A].
Cependant, comme tu es l'administrateur, un mot de passe est requis pour accéder à cette cellule (le mot de passe est "caché" en [B2] : pole... original, non? ) ;

La validation crée la feuille si elle n'existe pas.

- tu peux enfin supprimer une fiche devenue inutile et démarrer l'opération en cliquant... en dehors du tableau, en [M] !

Aucune autre cellule ne s'offrait vraiment pour le job.

De nouveau : mot de passe et suppression de la feuille et de la ligne en 'PARC VEHICULE'.

A tester, comme on dit, une erreur étant toujours possible...

A+

290parcvehicules.xlsm (84.16 Ko)

MErci à tous les deux pour votre aide.

Pour le 1er fichier (girodo), ca bug dés que je rentre (dans le tableau principal) des éléments dans une nouvelle ligne.

Je ne vois pas comment se fait la mise à jour (auto ou via un bouton).

Pour le 2e fichier (curulis57), c'est vraiment pas mal mais il y'a qq soucis, notamment des dates qui se retrouvent dans modele (erreur ou voulu)?

Si je peux me permettre, je suis ok pour la date du jour qui se met de manière auto dans la relève des kms. Par contre pour les autres cellules (prochain CT, prochaine révision...), je préférerais les rentrer manuellement.

J'aiemerais un bouton aussi pour faire l'ajout d'une nouvelle fiche. Un autre pour supprimer une fiche. (2 icones en dessous de celle de recherche par exemple). Est possible (j'abuse). JE dis ça car je m'adresse à un public d'agents techniques qui ont plus l'habitude d'une clef à molette que d'Excel

Après je ne vois pas non plus de bouton (mise à jour). Je m'explique si je change un véhicule d'affectation par exemple, j'aimerais que cela se mette à jour automatiquement ou via un bouton màj. Idem pour marque ou modèle (imagine j'ai fait une erreur et j'ai choisi le mauvais véhicule lors de la création de fiche)?

Voila en gros les modifs mais je vous remercie encore tous les deux pour cette avancée significative !!

Je précise aussi que dans le fichier original y'avait une macro "Bouton1_Clic" qui permettait de créer des fiches en lot (et pas une à la fois). Je trouve ça mieux. Par contre avec cette macro, si on ajoute ou modifie qqch dans une des cellules (de ces lignes crées), ça ne met pas à jour automatiquement dans la fiche correspondante. C'est pour ça que je demandais un bouton mise à jour à la base

J'ai remarqué aussi dans ton fichier curulis57, la petite voiture (pour revenir au tableau général) est complétement "écrasée" dés qu'un nouvelle fiche est crée.

Le mot de passe pour créer/supprimer la ligne est pas mal finalement.

Par contre je placerais le mot de passe dans un "code "vba"

J'ai remarqué que la ligne 2 du tableau général comporte plein de données (certaines en blanc donc non visibles). c'est voulu?

Salut Shine,

désolé pour le délai de réponse, j'étais déjà parti à fond dans un autre projet.

  • les données en blanc en ligne 2, c'est voulu. Pas effacer! Sauf [B2] (le mot de passe) que je peux cacher ailleurs ;
  • mot de passe : je trouve logique que tu le gardes! Quel mot de passe veux-tu que j'intègre dans le code?
  • créer des fiches en lot ??? NON Par bouton : NON plus
° Bouton : je t'amènerais de toute façon sur la première cellule vide de ton tableau! Autant y aller tout de suite! Si tu veux, je la colorerai, histoire de visualiser l'invitation!

° En lot : pas parce que je veux t'embêter ou jouer mon têtu mais ton projet va partir en sucette de cette manière.

L'idéal serait même de n'avoir QU'UNE SEULE fiche, laquelle recevrait les infos en fonction de la demande, ce qui impliquerait (toujours dans l'idéal) de créer dans une feuille 'BDD' une base de données composée uniquement des données brutes de ta flotte dans laquelle il serait aisé d'aller chercher les infos. Tu ne peux afficher qu'une fiche à la fois, non?

Je vais te faire un modèle de BDD

  • un bouton pour supprimer ? NON. J'ai mis une colonne de plus à droite avec une croix rouge à cliquer pour démarrer l'opération avec mot de passe. Un bouton n'apporterait rien de plus!
  • les données sont mises à jour en direct! Comprends pas ce que tu veux dire en affirmant le contraire!
Perso, ici, en modifiant les données, tout se met en place et aucune date ne vient saboter la cellule 'Modèle'.

Je peux ajouter, pour te rassurer, un SAVE à chaque changement ;

  • pour les dates automatiques, je dois effectivement retirer le saut automatique vers la cellule suivante qui empêche l'encodage manuel ;
  • désolé pour ta petite voiture sans doute écrasée par tes brutes de 'clefs à molette'.

Je reviens vers toi demain ou après, promis!

A+

Salut.

Je reviens vers toi après essai du fichier.

Pour la création de fiche en lot, je trouve ça plus pratique. J'ai une 50aine de véhicules à rentrer (minimum) et j'irais bcp plus vite à saisir le tableau (rapatriement de données d'un autre tableau) que ligne par ligne. De toute manière, il n'y a que moi qui crée une fiche ou en supprime une. Les utilisateurs ne renseigneront que la relève des kms, prochain CT et entretien sur le tableau principal. Et sur la fiche, seulement la partie basse (détail de ce qui a été fait dans la prestation d'entretien)

La colonne avec la croix rouge (suppression) n'apparait pas chez moi. Idem je ne comprends pas que l'icone voiture s'écrase à la création de fiche. J'ai inséré le logo de ma boite dans l'autre partie du cartouche, c'est pareil, à la création du fichier, il devient "tout écrasé"

Pour la date automatique, c'est une horreur et je préférerais les rentrer manuellement (prochaine révision, prochain CT). En effet, tu as le malheur de cliquer la cellule, ça s'incrémente et impossible de corriger ou de revenir en arrière. Idem pour la date de la releve. Si le gars a fait sa relève plusieurs jours auparavant, il ne peut pas mettre la bonne date

Pour les dates qui se retrouvent dans le choix (menu déroulant) modèle, il y'a un bug. J'ai regardé l'onglet caché légende et certains format de cellules de la ligne modèle étaient passés en date (au lieu du texte ou standard). Cela explique cela. Bizarre.

Pareil pour l'onglet suivi ou certaines cellules (qui doivent se remplir automatiquement) de l'entête de la fiche où le format était passé en date au lieu de standard.

Voilà mon retour sur l'utilisation du fichier.

Merci de ton aide en tout cas, mon projet de fichier partagé avance.

Bonjour Shine,

quand tu dis que tu importes des données d'un autre tableau, tu veux dire que tu remplis par copier-coller plusieurs lignes de la feuille 'PARC VEHICULE' ?

En fonction de cette réponse, je vais jumeler la création des nouvelles fiches à l'importation des données, sinon je te mettrai ton petit bouton de création en vrac.

Pour le reste :

  • je supprime la datation automatique ;
  • je supprime l'opération "Mot de passe" de suppression aussi ?
  • je vais regarder de plus près cette petite voiture qui s'écrase.
  • je vois bien le problème de date dans la liste de validation mais comme je n'y ai pas accès...

Dès que j'ai deux minutes...

A+

Salut curulis57

Oui c'est tout à fait, je compte copier/coller des données d'un ancien tableau à jour en termes de parc.

On peut laisser la fonction ajout d'une nouvelle fiche en cliquant la cellule immat de la dernière ligne du tableau (la première vierge en fait, comme tu as fait). A voir si les deux peuvent se combiner?

Ok pour la suppression date automatique (mais j'ai déjà trouvé le code à virer dans vba)

mot de passe de suppression, on va garder. Pas si mal en fait et protection.

Ok pour l'image d'icone qui "s'écrase"

Pour le pb de date dans la liste, je ne sais pas pourquoi dans l'onglet (caché) légende, les formats de cellule étaient passés en date. J'ai rectifié également ce point.

Bonne journée à toi.

Je galère aussi sur un point (la colonne Contrôle Technique). J'essaie de faire une mise en forme conditionnelle : si la date de CT est inférieure ou égale à celle d'aujourd'hui alors cellule en fond rouge clair et texte en rouge foncé (et si cellule vide ou non renseignée, rien). Mais rien n'y fait, je sèche!

Salut Shine,

pas expert dans les MFC mais, en piochant...

  • tu sélectionnes [H5], première cellule en colonne CT ;
  • Accueil - Mises en forme conditionnelle - Utiliser une formule... ;
=ET(H5>0;H5<AUJOURDHUI())

- s'applique à : sélectionner la colonne 'CT'.

Ce sera mieux comme réponse quand je me déciderai à étudier cela d'un peu plus près...

A+

Salut, je reviens vers toi car autre soucis.

J'ai mis le logo de ma boite dans la fiche "SUIVI" type.

Quand j'insère un véhicule, le logo est lui aussi écrasé (mais moins).

Autre défaut, j'ai rajouté un onglet "A lire" avec qq explications pour l'utilisation du fichier.

Hors avec ce nouvel onglet (placé avant l'onglet du tableau général, je ne sais pas si cela a une incidence?), quand j'insère une nouvelle fiche/nouveau véhicule, le logiciel utilise le contenu de ce nouvel onglet à la place d'utiliser la feuille vierge "SUIVI" de l'onglet caché! Bref cela est complétement illisible et inutilisable. Bizarre vous avez dit bizarre. J'ai regardé les codes VBA mais je ne vois pas d'où cela peut venir.

Bonjour.

As-tu pu regarder aux différents problèmes soulevés?

Merci.

Rechercher des sujets similaires à "vba macro mise jour"