XL 2019 Copié une selection dans une autre feuille

MPETIT

XLDnaute Nouveau
Bonjour à tous,

Je sais que le transfert de données a été résolu maintes et maintes fois mais là je bloque quand même....

Pour mieux comprendre voici une liste d'étape pour mieux comprendre mon fichier :

-Ouvrez le fichier
-Allez dans l'onglet "login" et marquez "Benoît" (nom d'utilisateur") et "stage" (mot de passe).
-Allez dans planning général, un "Userform" s'ouvrira et choisissez n'importe quelle mois.

Maintenant que vous avez ces informations classées en fonction des mois. J'aimerais les copier vers la "feuil1" grâce à un bouton. J'ai tout essayé mais a chaque fois il y a un problème soit de mauvais copiage soit de suppression d'informations.
Attention il faut qu'a chaque fois que l'on clique sur le bouton on est choisit un mois dans le "userform" et que celui-ci nettoie la feuille 1 avant de le copier (logique sinon on serrait obliger de supprimer manuellement les infos sur la feuil1 de l'ancien mois).

Le fichier : https://www.cjoint.com/c/IHvoOStLICT

Merci d'avance

Amitiés
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, MPETIT

MPETIT
Pour infos
1) Le forum permet de joindre directement des fichiers dans les discussions
(C'est ce qui se pratique habituellement)
2) Pas besoin de mot de passe pour accéder au projet VBA
(Ce qui revient à dire inutile de mettre un mot de passe sur un projet VBA puisque c'est une protection illusoire.
Le net regorge d'outils ou moyen pour outrepasser ce verrou bancal)

Donc j'attends ton fichier posté dans ta discussion pour l'ouvrir.
(Il suffit de cliquer sur: Joindre des fichiers)
 

MPETIT

XLDnaute Nouveau
Bonjour staple1600,

Et bien d'abord.... merci pour ces informations. Si je n'ai pas joint le fichier ici c'est tout simplement parce que je pensais que celui-ci était trop volumineux (expérience dû à la capacité max dans d'autres forums).

Je viens d'essayé et j'ai un message d'erreur(voir ci dessous) donc tu devras utiliser le lien que j'ai donné pour récupérer mon fichier.

Amitiés
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    3.5 KB · Affichages: 10

Staple1600

XLDnaute Barbatruc
Re

L'usage est aussi de joindre un fichier exemple allégé créé spécialement pour illustrer la problématique rencontrée.
(On ne joint jamais le fichier original, et le fichier exemple doit également être anonymisé (voir la charte du forum sur ce point)

Donc prends le temps de faire un petit classeur avec un userform, et trois feuilles (planning, login et feuil1)
Et si ton exemple est quand même volumineux, tu peux le zipper
(le forum accepte les fichiers zip)
 

MPETIT

XLDnaute Nouveau
J'ai fait ce que j'ai pu en simplifiant mais quand l'on choisit un mois tout part en cacahouète. Il faut juste sélectionner un mois et copié les cellules en dessous même si il y a rien dans la feuille copié ( toutes consignes sont au dessus dans mon premier message). C'est le principe qui est important de comment les copier qui m'importe.
 

Pièces jointes

  • Exemple Copié selection.xlsm
    101.6 KB · Affichages: 9

Staple1600

XLDnaute Barbatruc
Re

J'ai ouvert ton fichier.
Une petite suggestion pour commencer
Pour le choix de la période, j'utiliserai plutôt une ListBox
voir exemple ci-dessous
VB:
Private Sub ListBox1_Click()
MsgBox MonthName(Month(CDate("1/" & ListBox1.Value)))
End Sub

Private Sub UserForm_Initialize()
Dim mois
mois = Array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")
ListBox1.List = mois
End Sub
 

MPETIT

XLDnaute Nouveau
Oui c'est vrai, tu as raison pour simplifier le code cela est mieux. Après il faudra que je l'adapte à ce que je veux.

Sinon aurais-tu une idée pour ma demande initial ? A la base je voyais sa sous une macro simple. Sélectionner un mois puis commencer l'enregistrement en sélectionnant la plage de cellule puis la copié simplement dans l'autre feuille. Il ne restais plus qu'a rajouté une ligne de code au début de la macro pour supprimer le contenu de la feuille qui doit recevoir la copie.

Au final je n'ai pas réussi, la macro faisait n'importe quoi.
 

MPETIT

XLDnaute Nouveau
Cela est plus complexe que ça d'où mon gros fichier qui comprend tout. J'ai l'impression que tu me prend pour un "idiot". Je ne copie pas ces informations par enfantillage. Vois-tu, j'aimerais savoir l'état des opérations de maintenance ("Fait" ou "pas fait").

Si tu veux vraiment comprendre tu dois utiliser mon fichier trop volumineux. Comment ce fichier fonctionne - il ?

Un opérateur va dans préventif, et renseigne l'opération de maintenance qu'il a réalisé (essaye pour voir) et la confirme. Deux choses changent suite à sa ! La première : Un rajout d'une ligne dans la feuille d'historique préventif . La seconde, le changement des valeurs de la colonne "mois prochain" se situant dans la feuille "Planification du préventif" (il y a une fréquence et dès qu'il y a confirmation, on est repartit pour un cycle et ainsi de suite).

Le gars qui va suivre sa pour savoir si tel opération a été faite doit actuellement comparé les résultat de la feuille "Historique préventif" et "planning général" et voir ce qui a été fait ou pas.

Le problème est de savoir acualisé sa ! Le seul moyen pour savoir sa, c'est quand les valeurs de la colonne "Mois prochain" de la feuille "Planification du préventif" change. Cela veut dire qu'une maintenance a été réalisé.

Pour lui faciliter la vie j'aurais voulu faire exactement ce que j'ai précisé dans mon premier message à la différence que dans la colonne "Etat" qui se situe dans la feuille "planning général" que je veux copier. Ensuite une fois copié, il y aurait une formule qui irait voir dans la feuille de plannif du préventif pour vérifier si le mois a changé et donc dans ce cas là, la case se changerait en "Fait".

De toute façon, je ne sais même pas si ca marchera et pourquoi je te l'explique......

Bref

Cordialement,

AP
 

Staple1600

XLDnaute Barbatruc
Re

J'exprime juste une opinion qui veut juste dire que quand il s'agit de dates, j'utilise le filtre automatique.
Ni plus, ni moins.

Pour le reste, j'ai téléchargé ton fichier et j'ai lu la macro Filtrer
(dont j'ai du mal à saisir la syntaxe VBA)
D'où ma suggestion évoquée plus haut (utiliser le filtre automatique en VBA si besoin)
 

MPETIT

XLDnaute Nouveau
Je n'arrive pas a utilisé correctement le bouton filtrer automatique (pourtant c'est très simple). Quand je rajoute ce bouton et que je vais dans "Filtre chronologique" je choisit ensuite "Mois prochain" et la il n'y a rien. Peux t-on trier des cellules utilisant des formules ?
 

Staple1600

XLDnaute Barbatruc
Re

Je viens de tester ta macro Filtrer (avec ces petites modfis)
et une erreur survient (que tu ne voyais pas à cause du On Error...)
Je te laisse voir sur quelle ligne de code, l'erreur apparaît
VB:
Sub Filtrer()
Dim Ctrl As Control
Dim LigneC As Integer
Dim PlageS As Range
Dim Col As String
MsgBox "test"
    'On Error GoTo fin
    'Sélection
    Application.ScreenUpdating = False
    With WsS
        Select Case WsS.Name
        Case "Planning_général"
        Col = "C"
        Case "Planification du préventif"
        Col = "H"
        End Select
        MsgBox Col
        '.Range("AA1:AA12").ClearContents
        If .FilterMode Then .ShowAllData
        For Each Ctrl In Me.Controls
            If Ctrl.Object.Value = True Then
                LigneC = Application.Max(2, .Range("AA23").End(xlUp).Row + 1)
                MsgBox LigneC
                .Range("AA" & LigneC).Formula = "=MONTH(" & Col & "14)=" & Ctrl.Tag
            End If
        Next Ctrl
        'Tri
        Set PlageS = .Range("A13:M" & .Range("A" & Rows.Count).End(xlUp).Row)
        PlageS.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        .Range("AA1:AA" & LigneC), Unique:=False
    End With
    Application.ScreenUpdating = True
'fin:
End Sub
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87