Copier/coller cellule selon condition
Bonjour à tous,
Bricoleur en excel, j'essaie de réaliser une fonction au dessus de mon niveau.
J'ai un fichier comprenant un onglet comportant l'ensemble des objets sur différentes zones.
Je souhaite que ces objets soient copier/coller dans les onglets de la zone lui correspondant.
J'ai déjà une fonction permettant de creer les onglets de zone selon une liste dans "zone" :
Private Function OngletExist(psNom As String) As Boolean
Dim oSh As Worksheet
Dim lErr As Long
Dim sErr As String
On Error Resume Next
Set oSh = Worksheets(psNom)
lErr = Err.Number
sErr = Err.Description
On Error GoTo 0
If lErr = 0 Then
OngletExist = True
ElseIf lErr = 9 Then
OngletExist = False
Else
MsgBox "Erreur n°" & lErr & vbCrLf & sErr, vbExclamation
End If
Set oSh = Nothing
End Function
Public Sub CreerFeuilles()
Dim oShModele As Worksheet
Dim oShListe As Worksheet
Dim iLigFin As Integer
Dim iLig As Integer
Dim oShNew As Worksheet
Dim sNomOnglet As String
Set oShModele = Worksheets("Modele zone")
Set oShListe = Worksheets("Zone")
iLigFin = oShListe.Range("A" & Rows.Count).End(xlUp).Row
Sheets("Modele zone").Visible = True
For iLig = 6 To iLigFin
If oShListe.Range("A" & iLig).Value <> "" Then
sNomOnglet = oShListe.Range("A" & iLig).Value
If OngletExist(sNomOnglet) Then
Set oShNew = Worksheets(sNomOnglet)
Else
oShModele.Copy After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = sNomOnglet
Set oShNew = Worksheets(Worksheets.Count)
End If
' oShNew.Range("B3").Value = oShListe.Range("D" & iLig).Value 'Prénom
'oShNew.Range("F3").Value = oShListe.Range("C" & iLig).Value 'Nom
'lien hypertext
'oShNew.Hyperlinks.Add Anchor:=oShListe.Range("D" & iLig), Address:="", SubAddress:= _
' "'" & sNomOnglet & "'!A1", TextToDisplay:=oShListe.Range("D" & iLig).Value
Set oShNew = Nothing
End If
Next iLig
oShListe.Select
Set oShListe = Nothing
Set oShModele = Nothing
Sheets("Modele zone").Visible = False
End SubJe souhaiterai maintenant en ajouter une autre ou transformer celle là pour mettre les objets répertorié dans "Pré-montage" dans la zone correspondante.
Soit copier ligne à ligne les colonnes E,F,L pour les coller dans l'onglet correspondant à la zone en A,B,F
J'espère avoir été claire.
Merci par avance pour vos aides
Bonjour à tous,
Personne ?
Mon problème est il mal posé ?
Salut Zittoun,
Je reporte ici ta demande en privé afin d'avoir tout l'historique de la discussion à un seul endroit :
zittoun a écrit :Bonjour Yvouille, Je me permets de vous contacter ......
Plusieurs éléments me pose problèmes pour adapter votre solution à mon problème :
........................
- Je ne voudrai pas que l’exécution du code soit automatique (je ne sais pas par où commencer)
- Je souhaite copier les colonnes E,F,L,M de la feuille Pré-montage dans la feuille de la zone associé (par exemple P66) la colonne E->A, F->B, L->F, M->C.
- Je souhaite garder la mise en forme des cellules de destination du copier coller.
Si tu ne veux pas d'un report automatisé, à quel moment veux-tu reporter les données d'une feuille à l'autre ? Par exemple lorsque tu le décides, en cliquant sur un bouton ?
Et si oui, quelles données doivent alors être reportées : celles de toutes les zones de la colonne E de la feuille Pré-montage ou celles d'une seule des ces zones à la fois ?
Pourquoi ne veux-tu pas que ces reports soient automatisés lors de l'activation des différentes feuilles P66, Encadrant Nord, Encadrant Sud ?
A te relire.
Salut Yvouille,
Merci pour ton retour rapide !
Oui je pensais effectivement faire un bouton pour lancer cette fonction de copier/coller. La raison de ce choix est que le "Pré-montage" est fait en premier avec 80% du matériels mais une fois le chantier commencé il y a souvent des ajouts ou du petit matériel qui ne se retrouve pas au pré-montage. Donc si le copier coller est automatique je perdrais des donnés ajouté manuellement dans la zone.
Pour l'importation elle peux être d'un coup pour toutes les zones, donc l'ensemble de la colonnes E.
Le report dans les zones peut être automatique à la création de la zone mais pas continue pour la raison précédemment évoqué.
J'espère avoir été claire et répondu à tes demandes de précisions.
Bien à toi
Je ne comprends toujours pas très bien ta manière de travailler.
J'ai compris que tu ajoutes des lignes dans la feuilles "Pré-montage" pour une zone bien précise indiquée dans la colonne E de cette feuille, mais que tu ne veux pas effectuer le transfert des données de cette feuille tant que toutes les données (toutes les lignes) de cette zone ne sont pas inscrites sur la feuille ''Pré-montage''. Complètes-tu ces données manquantes un autre jour ?
Une fois que toutes les données d'une zone sont complètes sur la feuille ''Pré-montage'', tu veux alors pouvoir faire le transfert sur une feuille propre à cette zone. Cette feuille existe déjà ou elle est créée automatiquement par la macro en place ? Si la feuille propre à cette zone est créée par macro, comment est déclenché le code ?
Une fois les données transférées, doivent-elles disparaître de la feuille ''Pré-montage'' ?
Tu dis qu'il peut y avoir plusieurs zones à traiter en même temps. Cela veut dire que tu peux préparer plusieurs lignes pour plusieurs zones (le même jour, sur plusieurs jours) et les transférer que lorsque toutes les lignes de toutes ces nouvelles zones sont prêtes ?
Il y aurait la possibilité de travailler de cette manière : tu inscrirais des données sur la feuille ''Pré-montage" pour plusieurs zones et tu lancerais la macro. Cette macro contrôlerait si la feuille pour chaque zone concernée existerait déjà ou la créerait si non. Puis chaque ligne serait ajoutée à la feuille de la zone concernée si elle n'y est pas déjà (mais cela sous-entendrait que chaque ligne doit avoir une référence unique quelconque). Reste à savoir si les lignes présentes sur la feuille ''Pré-montage'' doivent être alors effacées ou non ??
Ou alors explique mieux comment tu travailles. Lorsque tu dis : "Le report dans les zones peut être automatique à la création de la zone", je ne sais pas de quoi tu parles. Par ''création de la zone'', veux-tu dire la création de la feuille Excel au nom de cette zone ?
Si je place le contexte ça sera certainement plus claire.
L'onglet Pré-montage est constitué dans une phase amont qui permet de devenir directement un plan de charge pour un atelier.
Dans un second temps le chantier commence et un autre service créer un nouveau fichier avec des onglets zones avec l'ensemble des items pré-montage + d'autres particuliers. Ces onglets zones permettent suivre l'avancement par centre desservi. Il existe un onglet pour résumer l'avancer du chantier global avec l'avancement de chaque centre (intérêt visuel).
De plus suite à une de tes questions j'ajoute que le chantier à des indices, ce qui implique le premier fichier (onglet pré-montage) d'évoluer en ajoutant des items. Et donc le second fichier (les onglets zones) avoir ces items.
A celà j'ajoute un onglet regroupant les temps unitaire de chaque items (base de donnée) et un autre onglet pour résumer les temps de production de l'ensemble (intérêt visuel pour la gestion de l'atelier et des travaux).
L'objectif est donc de créer un fichier unique pour suivre deux services séparés mais qui travail en coordination.
Donc pour répondre à tes questions :
J'ai compris que tu ajoutes des lignes dans la feuilles "Pré-montage" pour une zone bien précise indiquée dans la colonne E de cette feuille, mais que tu ne veux pas effectuer le transfert des données de cette feuille tant que toutes les données (toutes les lignes) de cette zone ne sont pas inscrites sur la feuille ''Pré-montage''. Complètes-tu ces données manquantes un autre jour ?
Oui au moment d'un changement d'indice
Une fois que toutes les données d'une zone sont complètes sur la feuille ''Pré-montage'', tu veux alors pouvoir faire le transfert sur une feuille propre à cette zone. Cette feuille existe déjà ou elle est créée automatiquement par la macro en place ? Si la feuille propre à cette zone est créée par macro, comment est déclenché le code ?Créé automatiquement par la macro déclencher par un bouton. Se trouvant dans l'onglet zone créer dernièrement pour me permettre de "forcer" au moment de la saisie dans l'onglet pré-montage la zone et le centre desservie. Un onglet d'initialisation du fichier en quelque sorte.
Une fois les données transférées, doivent-elles disparaître de la feuille ''Pré-montage'' ?Non jamais
Tu dis qu'il peut y avoir plusieurs zones à traiter en même temps. Cela veut dire que tu peux préparer plusieurs lignes pour plusieurs zones (le même jour, sur plusieurs jours) et les transférer que lorsque toutes les lignes de toutes ces nouvelles zones sont prêtes ?Oui car deux services séparés
Il y aurait la possibilité de travailler de cette manière : tu inscrirais des données sur la feuille ''Pré-montage" pour plusieurs zones et tu lancerais la macro. Cette macro contrôlerait si la feuille pour chaque zone concernée existerait déjà ou la créerait si non. Puis chaque ligne serait ajoutée à la feuille de la zone concernée si elle n'y est pas déjà (mais cela sous-entendrait que chaque ligne doit avoir une référence unique quelconque). Reste à savoir si les lignes présentes sur la feuille ''Pré-montage'' doivent être alors effacées ou non ??Cette façons de voir est la plus élégante !
Après dans les faits l'ajout d'une nouvelle zone est quasiment impossible (considéré comme un nouveau chantier) Il n'y a que l'ajout d'items.
Et par contre les lignes ne doivent pas s'effacer.
Le report dans les zones peut être automatique à la création de la zone", je ne sais pas de quoi tu parles. Par ''création de la zone'', veux-tu dire la création de la feuille Excel au nom de cette zone ?Cette remarque est dû au faite que ce sont deux services séparés et que ce fichier à pour but d'éviter la deuxième saisie des items fabriqué par l'atelier.
Je te souhaite une bonne lecture en espérant avoir été claire
Re,
Tu vas probablement être très déçu, mais je ne vais pas aller plus loin, j'abandonne l'idée de tenter de t'aider.
Je n'arrive pas à cerner ta manière de faire, à comprendre ton problème. Plus je te pose de question, plus les choses se compliquent ; il y a maintenant deux services, des centres, des chantiers, etc., je ne sais plus où on en est
J'ai tenté de te venir en aide et je n'y suis par parvenu : désolé.
A toi de voir comment tu pourrais présenter ton problème d'une meilleure manière à ce qu'il soit plus compréhensible.
Je ne peux que te conseiller d'indiquer ce fil comme résolu et d'en ouvrir un nouveau, sur une meilleure base. Peu de membres s'intéressent effectivement à un fil déjà bien entamé.
Sorry, sorry, sorry !
Merci pour ta franchise
Je vais essayer de continuer à avancer avec ton bout de code.
Et dégrossir le fichier présenté à ma problématique exact.
A+