Je viens pour vous faire part de mes difficultés à arriver au résultat escompté et vous demander un peu d’aide.
J’ai commencé à préparer un tableau de suivi d’activité pour mon équipe.
J’ai donc un feuille « suivi » dans laquelle chaque chef de projet (MR / NL / DV) va rentrer les informations concernant les projets qu’il a en charge.
Grâce à cette feuille, j’ai pu établir l’affichage de 2 plannings (diagramme de Gantt) : 1 en fonction du chef de projet et un en fonction du type de projet.
J’ai ensuite une feuille par chef de projet, qui permet d’avoir des informations supplémentaires sur les projet de la feuille suivi et de rentrer des études qui sont traitées par chacun sans forcément apparaître dans la feuille suivi (étude pour des projets qui ne voient pas le jour par exemple).
Mes demandes sont donc :
J’aimerais que les feuilles des chefs de projet se remplissent automatiquement en fonction de la feuille suivi
J’aimerais pouvoir intercaler des lignes avec champs entièrement libres, sans aucun remplissage automatique donc
« J’aimerais que les feuilles des chefs de projet se remplissent automatiquement en fonction de la feuille suivi »
Difficile sur ton fichier de faire le lien entre la source (feuille suivi) et la cible (chefs de projet)
Quelle colonne de la source doit correspondre à quelle colonne de la cible (un exemple réalisé à la main serait salutaire)
« J’aimerais pouvoir intercaler des lignes avec champs entièrement libres, sans aucun remplissage automatique donc »
Dans ma feuille suivi, j’ai une colonne (D) chef de projet (MR, NL, DV).
J’ai ensuite une feuille par chef de projet dans laquelle je voudrais que la colonne A se remplisse automatiquement en fonction de la colonne B de la feuille suivi ; la colonne B se remplisse en fonction de la colonne F de suivi ; la colonne C se remplisse en fonction de la colonne G de suivi.
Je voudrais insérer des lignes en champs libre dans l’onglet cible.
Ok compris
Je te propose une automatisation déclenchée sur la feuille Suivi une fois la ligne saisie par double clique sur la cellule de celle-ci colonne D « CHEF DE PROJET »
Aucun souci pour insertion de lignes en cible
Attention la copie de la source vers la cible se fait sur la ligne cible dont la 1° cellule en colonne A est libre
Le traitement se base sur la colonne A de la cible pour déterminer la 1° ligne disponible et de réaliser la copie dessus
Ci-joint ma proposition
onglet Suivi doubleclique colonne D sur une cellule dont la ligne est saisie
Important les noms colonne D doivent avoir leur propre onglet au nom strictement identique (casse, pas de blanc aux extrémités) au risque d’un bug
Pour la synchro c’est nickel le fait de prendre la première ligne cible libre le rendu est exactement ce que je recherchais.
Par contre sur la méthode, je m’attendais plus à quelque chose d’automatisé, même si le coup du double click peut éviter les erreurs.
Le problème avec cette méthode est que si je fais des modifications sur ma source, je suis obligé de resynchroniser vers ma cible mais dans ce cas je créé une nouvelle ligne en doublon.
Une automatisation de ce type offre l avantage de traiter sans difficulté cette recopie dans un contexte complexe mise à jour en fonction d un paramètre (nom colonne D) pour cibler l onglet en rapport sur une ligne non défini à rechercher ce que des formules ne peuvent réaliser
L inconvénient par rapport au formule c est qu il nécessite un déclenchement soit par une action spécifique soit par une action découlant de l intervention de l utilisateur donc de sa saisie
Mais pour recopier toutes les données il faut que celles ci soient toutes saisies
Comment connaître la derniere qui le sera si tant est que les trois normalement prévu le soit
Pas simple
Il faudrait pour cela être certain que telle donnée sera systématiquement la dernière pour que le déclenchement soit en rapport avec sa saisie
Tout erreur dans cette manière d opérer empêchera la réalisation de la recopie
A toi de me dire si c’est jouable et qu’elle donnée utiliser
Pour les modification de saisie déjà en place il faudrait jouer sur une donnée spécifique de chaque recopie pour que le traitement aille scruter son éventuelle présence dans l onglet de destination et d engendrer sa modification au lieu d un ajout
Quelle donnée spécifique utiliser ?
Sinon en prévoir une comme une numérotation incrémentée
Ainsi par ce numéro propre à chaque copie aucune difficulté pour la retrouver afin de la modifier
A toi de me dire
A la lecture de ce que tu dis, je pense qu’il n’y a pas de solution miracle et qu’au final c’est certainement celle que tu me proposes qui est la plus simple.
Merci beaucoup.
Pour limiter les doublons j’ai récupéré une autre formule qui m’a été donné et ça permet de ne pas réaliser de copie des cellules s’il n’y a eu aucune modification.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Integer, dl As Integer, sh As String, lig As Integer, j As Integer, test As Boolean
dl = Sheets(« Suivi »).Range(« D » & Rows.Count).End(xlUp).Row
For i = 4 To dl
test = False
sh = Sheets(« Suivi »).Range(« D » & i).Value
lig = Sheets(sh).Range(« A » & Rows.Count).End(xlUp).Row + 1
For j = 4 To lig
If Sheets(sh).Range(« A » & j).Value = Sheets(« Suivi »).Range(« B » & i).Value And _
Sheets(sh).Range(« B » & j).Value = Sheets(« Suivi »).Range(« F » & i).Value And _
Sheets(sh).Range(« C » & j).Value = Sheets(« Suivi »).Range(« G » & i).Value Then
test = True
End If
Next
If test = False Then
lig = Sheets(sh).Range(« A » & Rows.Count).End(xlUp).Row + 1
Sheets(sh).Range(« A » & lig).Value = Sheets(« Suivi »).Range(« B » & i).Value
Sheets(sh).Range(« B » & lig).Value = Sheets(« Suivi »).Range(« F » & i).Value
Sheets(sh).Range(« C » & lig).Value = Sheets(« Suivi »).Range(« G » & i).Value
End If
Next
End Sub
Oui c est une possibilité tester l ensemble des cellules de la cible par rapport à l ensemble de celles en correspondance en source
Maintenant si pour quelques lignes ce contrôle avant recopie par sa rapidité d execution peut se concevoir au fil des saisies cela risque d être très handicapant
C est quand même 3 cellules × nombre de lignes source × nombre de lignes cibles
Pour 10 lignes en source et 10 lignes en cible 300 contrôles jouable
Pour 100 lignes en source et 100 lignes en cibles 30000 contrôle et la souci !!!
Non pour moi j en reste à ma solution d une clé unique par saisie seule solution capable de réaliser ce type de contrôle indépendemment de la charge des saisies
Déterminer un ordre de saisie et surtout s’y tenir va être compliqué. Je pense donc que le mieux est encore l’option de la clé unique.
Je suppose qu’on ne pas le faire par rapport au numéro de ligne ? Au cas où, j’ai donc rajouté une colonne en Q avec numérotation. Suivi Projets macro - Copie DEF - Copie.xlsm (318,0 Ko)
Bonjour
Ci-joint ton fichier avec la clé en colonne Q Source et Cible
J’ai adapté le code en conséquence (évolution du 1° code envoyé)
Plus de doublon
Soit ajout si inexistant en cible ou modification si déjà en place
Reste à mettre à jour les données en cible déjà présentes sans leur clé colonne Q
A la main ou en nettoyant toutes les cibles et les remettre en place par le doubleclick
Pour éviter tout oubli de recopie par l’action doubleclick possibilité à la fermeture du classeur d’un message de rappel
Ce message si il sera utile après des saisies sera émis même si il n’y en a pas donc inutile mais présent
Voir l’utilité face à la contrainte
J’ai juste eu peur après l’avoir nettoyé puisque la synchro ne marchait pas. En fait si je n’ai pas de première ligne remplie dans ma feuille cible, la synchro ne se fait pas. Maintenant que je le sais, le « problème » est résolu.
Pour le message de rappel je pense que ça sera plus une contrainte donc je préfère laisser comme ça.