Copier ligne dans feuille correspondante sous condition

Bonjour,

Tout d'abord, je dois vous dire que je n'y connais rien en VBA...J'apprends par internet et j'ai lu des bouquins sur Excel et VBA , mais ça reste vague (puisque je n'ai pas réussi à trouver mon bonheur )

Je voudrais pouvoir améliorer mon planning de travail (je suis en vacances et ça fait une semaine que je suis dessus ...)

Dans le fichier que je vous joins il y a une première macro qui fonctionne

Elle me recopie la ligne si je mets n dans la colonne I et ce jusqu'à ce que je mette o

Mais je suis à la recherche d'une deuxième, pour l'améliorer et me faciliter le travail

je souhaiterais pouvoir recopier la ligne où je mets "o" ou "n" dans une feuille (créer ou pas ???), qui correspondrait au nom afficher dans la colonne "D" (machine) et ce à chaque fois, en dessous de la dernière ligne....

Le but étant de regrouper par machine toutes mes interventions au fur et à mesure, afin d'en faire un suivi, si possible.

Voici mon fichier:

Par avance je vous remercie pour toute l'aide que vous pourriez m'apporter (si vous avez des suggestions autres, aussi )

Ce fichier n'ai pas le définitif, il comportera plus de colonnes et de choix de machines ( une bonne trentaine...).

J'ai oublié de préciser que je ne peux pas lire les fichiers xlsx ou xlsm. Merci de voir pour afficher la macro dans le post.

Salut Michel et bienvenue sur le Forum,

Je te propose une solution un peu différente de celle que tu demandes, mais elle a l’avantage selon moi que tu peux modifier aussi souvent que tu veux ta feuille « Planning » et que tes feuilles par machines seront toujours actualisées correctement.

Dans le fichier ci-joint, tu modifies autant que tu veux la feuille « Planning » et seulement lorsque tu sélectionnes une autre feuille elle est entièrement réactualisée en fonction des entrées de la feuille « Planning ». Ceci se passe par un code placé dans ThisWorkbook.

Option Explicit

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim Nom_Feuille As String, DerLig As Integer, i As Integer

Application.ScreenUpdating = False

If ActiveSheet.Name = "Planning" Then Exit Sub

Nom_Feuille = ActiveSheet.Name
Range("A3:J" & Rows.Count).Delete

With Sheets("Planning")
    For i = 3 To .Range("B" & Rows.Count).End(xlUp).Row
        If .Range("D" & i) = Nom_Feuille Then
            DerLig = Range("B" & Rows.Count).End(xlUp).Row + 1
            .Range("A" & i & ":J" & i).Copy Destination:=Range("A" & DerLig)
        End If
    Next
End With

End Sub

Ceci a par contre comme inconvénient que tu peux utiliser tes différentes feuilles de machines que comme résumé – et non pas pour y apporter encore des modifications – puisqu’elles sont entièrement effacées et recréées à chaque sélection.

Est-ce une solution qui pourrait te convenir ?

Au passage regarde comment on peut simplifier un copier-coller : en une ligne mon code réalise ce que tu fais en 3 ou 4 lignes

Amicalement.

74essai-v2.zip (15.79 Ko)

Bonjour et Merci,

J'ai vu que votre macro c'est installée dans "This WorkBook", pourrais je savoir pourquoi? Et pourquoi le 'Option Explicit" en entête avant le Sub

Et puis je supprimer ma deuxième macro ?

A priori cela pourrait me convenir (je dois voir à l'usage...)

Le petit défaut est qu'il va falloir que je formate toutes mes feuilles à l'avance, car elle ne conserve pas la hauteur de ligne

Pourriez vous s'il vous plait, me commenter la macro, que je puisse comprendre le déroulement ?

D'avance Merci.

Salut,

Au sujet de la déclaration des variables (Option explicit et Dim xxxxxxxx), je te laisse prendre connaissance du cours proposé sur ce site (Cours VBA dans le ruban ci-dessus). A la leçon 3, spécialement les passages : « Déclarer ses variables n'est pas obligatoire mais recommandé………. » et « Remarque : il est possible de forcer les déclarations de variables ……. ».

Pour ton code « Private Sub Worksheet_Change(ByVal Target As Range) », tu ne voulais déclencher cette macro événementielle que lors de l’événement « Modification de cette feuille ». Il était donc bien de placer cette macro dans le code de la feuille elle-même.

Pour mon code « Private Sub Workbook_SheetActivate(ByVal Sh As Object) », je voulais qu’il se déclenche lors de chaque événement « Sélectionner une feuille ». Comme ça peut être n’importe quelle feuille du classeur, il fallait donc bien la placer dans ThisWorkbook.

Ta macro « Sub copiercollerlignedansfeuillecorrespondante() » n’est pas une macro événementielle et elle n’est pour l’instant déclenchée par aucune action (comme le clic sur un bouton). C’est donc un peu comme si elle n’existait pas et tu peux la supprimer sans autre.

Pour le formatage, je ne comprends pas vraiment ce que tu veux dire, puisqu’à première vue, tout est identique sur les feuilles récapitulatives comme sur la feuille « Planning ». Si jamais on peut mettre en forme à la fin du code en place, mais il faut juste savoir que changer exactement.

J’ai mis quelques commentaires dans le code directement. Si ce n’est pas suffisant, merci de demander des précisions.

Amicalement.

57essai-v3.zip (13.62 Ko)

Bonjour et Merci,

Je suis toujours entrain de lire les cours, ainsi que des sujets du forum (très intéressant...), mais j'ai l’impression que chaque cas est particulier.

Pour en revenir à mon problème, ce qu'il se passe c'est que si ma feuille (Machine) n'est pas formatée comme "Planning", elle ne reprend pas la mise en forme d'origine (hauteur de ligne...). Mais peut être qu'en créant une liste ça fonctionnera?

Est ce qu'il est possible d'avoir un message d'erreur en cas de feuille non créé ou encore mieux de créer la feuille automatiquement .

De cette façon je pourrais reprendre tous mes anciens "plannings" et gagner un temps fou pour effectuer mon suivi machine. Je n'aurais juste qu'à adapter en fonction du nombre de colonnes.

Ou me dire comment faire, je cherche dans les différents sujets mais chaque fois que j'essaie quelques choses ça ne fonctionnent pas .

MERCI de votre aide.

Salut,

Je suis content que tu me dises à quel point mes commentaires te sont utiles. C’est revalorisant

Selon moi il y a deux problèmes : le premier est que – une fois que ton fichier sera préparé comme il faut – tu devrais avoir une réactualisation de tes feuilles par machines. Ma proposition allait dans ce sens-là et était basée sur le fichier que tu nous as présenté. Dans la dernière version ci-jointe, la hauteur des lignes est corrigée comme demandé. Est-ce que cette partie du travail t’intéresse et te convient ou pas du tout ? Mais comme les feuilles machines se réactualisent lorsque tu les sélectionnes – dont elles doivent exister – je ne vois pas ce que tu veux dire par «il faudrait qu’il y ait un message d’erreur si la feuille n’est pas existante».

Il semble donc qu’il y ait un deuxième problème : est-ce le fait que tu voudrais «préparer» un fichier comportant toutes les feuilles nécessaires, ce qui permettrait de les réactualiser par la suite ??? Si oui, ce travail préparatif devrait selon moi être effectuer une bonne fois pour toute et je ne peux t’aider que si j’ai ton fichier réel à disposition.

Autrement je n’ai rien compris à tes désirs et à tes explications et il faut que tu sois plus précis.

A te relire.

68essai-v4.zip (15.81 Ko)

Bonjour,

Yvouille a écrit :

je ne vois pas ce que tu veux dire par «il faudrait qu’il y ait un message d’erreur si la feuille n’est pas existante»..

En fait je ne suis pas le seul à remplir ce "Planning", donc j'essaie d'éviter au maximum le risque d'erreur.

Je pense qu’effectivement je dois préparer un planning avec toutes les feuilles correspondantes à l'avance et penser à créer une nouvelle feuille pour les nouvelles machines.

Je vais effacer la macro qui ne sert à rien dans "Planning" et je vais adapter ta macro à mon planning.

Donc pour la macro c'est OK, j'ai juste une autre question, toujours pour ce planning:

Je travail avec une "liste" (sous excel 2003) et je n'ai pas l'incrémentation de mes cellules, si je l'enlève ça fonctionne.Je voudrais donc créer un bouton associer avec une macro pour incrémenter ma cellule (ça je pense pouvoir y arriver tout seul ). Seulement je me demande à quel endroit placer mon bouton (dans la liste je suppose ???...).

Je n'ai pas trop le temps de faire ça ce soir, je m'en occuperais samedi et te donnerais le résultat (je suis toujours les cours du site )

Encore merci de ton aide.

Salut,

MichelM37 a écrit :

Je pense qu’effectivement je dois préparer un planning avec toutes les feuilles correspondantes à l'avance et penser à créer une nouvelle feuille pour les nouvelles machines.

Si tu as 36 machines différentes, on pourrait éventuellement créer un code qui permettrait la création des 36 feuilles nécessaires et par la suite tu créerais manuellement une feuille par nouvelle machine. Mais si tu dois créer seulement 10 ou 15 feuilles de base, ça prendrait plus de temps de créer le code que de créer ces 10 ou 15 feuilles vierges.

Ou alors si tu as régulièrement plusieurs machines en plus, on pourrait créer un code qui créerait les feuilles nécessaires automatiquement au fur et à mesure que tu as de nouvelles machines. A toi de dire.

MichelM37 a écrit :

Je travail avec une "liste" (sous excel 2003) et je n'ai pas l'incrémentation de mes cellules, si je l'enlève ça fonctionne.

Je ne vois absolument pas de quoi tu parles. Je n’ai trouvé nulle part de liste, en tout cas pas sous Formules/Gestionnaire des noms et je ne vois pas de cellules dans lesquelles tu aurais placé une validation des données sur la base d’une liste. Alors dur-dur de te dire où tu dois placer ton bouton. Et puis peut-être bien que l’emplacement de ton bouton dépend du code qui y est associé. Il est où ce code, comment s’appelle-t-il ?

A te relire.

Bonjour,

J'ai une quarantaine de machines, je vais créer les feuilles à l'avance cela me permettra de vérifier l'orthographe. Avec un "copier-coller", ça va aller vite. Merci de la proposition.

Pour mon bouton:

Sur le fichier que j'ai envoyé, je travaille à la maison et je suis sous Excel 97. Mais au boulot je suis sous Excel 2003 et là je peux créer une liste (dans l'onglet "donnée"). Pour être plus précis, je te joins une capture d'écran.

impression ecran excel liste 1

Je fais mon planning à l'année, avec l'indication des semaines par machines. Je crée une liste et je trie par semaine. Ce que je n'ai pas fini, je le passe en semaine suivante ainsi de suite.

Donc une fois que je filtre ma semaine, je ne peux plus incrémenter mes cellules.

Ma cellule (en colonne A) est "1 INT 13", et je veux l'incrémenter à chaque nouvelle opération (2 INT 13, 3 INT 13, 4 INT 13...etc...) et non pour les recopies de ligne. Sans la liste filtrée, ça se fait tout seule, mais dès que je filtre ma ligne ça ne marche pas.

Je vais essayer de faire un code pour ce bouton déjà (sans m'occuper des filtres...).

Cordialement,

Michel

Salut,

Je ne suis pas certain de pouvoir te dépanner, mais je veux bien essayer. Toutefois, sans ton fichier, je n'ai pas trop l'envie de m'y lancer.

Alors soit tu peux fournir ton fichier réel - ou un fichier y correspondant vraiment - sur ce fil, soit tu me fournis ton fichier en privé. Dans ce dernier cas, écrit-moi un message privé ou un courriel privé en utilisant les icônes en dessous de mon profil (icônes «MP» ou «enveloppe»).

Cordialement.

Bonjour,

merci de me répondre aussi tôt.

Je vais t'envoyer par MP mon fichier actuel. Il est brut et je ne l'ai pas encore vérifié (à savoir je ne sais pas si les machines sont bien toutes au bon endroit et sont bien orthographiées...).

Encore merci.

Re-bonjour,

Comme indiqué en privé, je vais regarder ton fichier dès que possible.

Dans ton deuxième message, tu indiques "je n'ai pas fini, les cours du site et je ne me suis pas penché sur l'histoire du bouton associer à une macro. Mais j'espère bien y arriver avant la fin de la semaine... ". Je n'ai pas compris si ça a à voir avec le fichier fourni ou si c'est un problème à part. Si c'est ce deuxième cas, ce serait peut-être bien que tu demandes de l'aide à ce propos sur un autre fil.

Si ça à voir avec le fichier que tu m'as fourni en privé, merci de m'apporter quelques précisions.

Cordialement.

Bonjour,

Je suis entrain de finaliser mon Planning pour 2014, avec des modifications depuis le dernière fois (nous sommes passés sous office 2013...).

J'ai donc créé les onglets en fonction du nom de mes "Machines", mais je ne sais si j'ai trop d'onglets ou si cela vient d'autres choses, mais mon fichier plante Excel à chaque fois ???

Je peux envoyer une copie de mon fichier en MP...

PS: J'ai laissé tomber le bouton...

Salut,

MichelM37 a écrit :

Je peux envoyer une copie de mon fichier en MP...

Tu n'as pas le choix ; depuis le mois de septembre, je n'ai propablement pas gardé ton fichier

Cordialement.

OK merci je t'envoie le dernier par MP.

Re,

J'ai bien reçu ton fichier en rivé et je ne comprends pas que tu ne veuilles pas le mettre sur ce fil ; il n'a rien de hautement confidentiel selon moi et ça complique les choses

Lors de quelles opérations est-ce que ce fichier plante ?

A te relire.

Aucun problème pour le mettre; voici le lien:

Mais je l'ai mis en privé (dispo 4 jours uniquement).

En fait maintenant il plante lorsque j'essaie de l'ouvrir...mais avant il plantait lorsque j'avais plusieurs fichiers Excel d'ouvert...

J'ai installé une version d'essai 2013 (valable qu'un mois ), sur mon PC perso pour essayer, mais j'ai perdu toute la mise en pages, et toute les mises en forme conditionnelle .

Est ce qu'il est possible de faire une mise en forme identique sur toutes les feuilles, avec 2013? J'y avais passé trop de temps pour le refaire...

Salut,

Je ne comprends pas que tu mettes ce fichier à disposition que 4 jours, ça met une pression inutile. Aujourd’hui je suis au chalet, dans 4 jours je suis au travail. Si je ne peux pas commencer ou continuer à m’occuper de ton cas à ce moment-là, c’est gênant. Ou si un autre membre veux t'aider dans 5 jours

Chez moi, ton fichier s’ouvre tout à fait normalement (je veux dire sans b Et loquer), sinon comment veux-tu que je sache de quelles mises en page tu parles, je n’ai pas de deuxième fichier pour comparer ?

Maintenant si tes problèmes viennent de ta version de démo, est-ce bien la peine que l’on s’y penche des heures alors que ce sera complètement différent lorsque tu auras à nouveau ta version à toi ?

A la limite, ouvre un nouveau fil en tenant compte de mes remarques ci-dessus et tu verras si quelqu’un d’autre à une autre idée.

Amicalement.

Bonjour,

Au début, je ne pensais l'envoyer qu'à toi, c'est pour ça qu'il n'est dispo que 4 jours.

Mais aucun problème pour le remettre à disposition plus longtemps.

Pour la mise en forme, c'est sur toutes les feuilles, identique à la feuille "planning".J'ai vu que dans 2013, il y avait "recopie de la mise en forme",mais je n'arrive pas à le faire...

Ce fichier n'est que pour le travail et je n'ai pas le temps de m'y pencher pendant mes horaires.

Donc j'effectue tout ça chez moi pendant mon repos, mais n'ayant qu'une version 97 d'office, j'ai dû installer la version d'essai de 2013.

Je crois que je viens de comprendre ce qui ce passe...c'est que,effectivement sur mon PC, j'ai les deux versions d'office...

Je pense que c'est ça qui a dû foutre le bazar.

Lundi je vais le réessayer au boulot et je verrai si ça le fait toujours.

Est ce qu'une macro peut poser des problèmes si il y a plusieurs fichiers d'ouvert avec des macros?

Merci.

Voici le lien: https://www.cjoint.com/c/CLoliN7enHC

Bon a priori, chez moi, c'est bien le fait d'avoir les 2 versions d'Office qui fout le bazar...

Je vais réessayer lundi, avec ce fichier, sur les PCs du boulot pour voir?!

Je vous tiens au courant dès lundi soir.

Rechercher des sujets similaires à "copier ligne feuille correspondante condition"