Erreur de copie de données

Résolu
safach Messages postés 293 Statut Membre -  
Frenchie83 Messages postés 2254 Statut Membre -
Bonjour les amis,
j'ai un document dans lequel se fait ,par code VBA, la copie d'un onglet nommé "modele" et la copie de 2 colonnes du dernier onglet qui existe dans le fichier (les 2 colonnes colorés par jaune et vert)
mais depuis un temps la copie est altérée et j'aimerais rétablir l'ordre de nouveau
merci beaucoup pour votre aide dont j'ai vraiment besoin
le fichier est suivant ce lien
https://mon-partage.fr/f/zAviKYUR/
bien cordialement

Configuration: Windows / Chrome 76.0.3809.132


--
c'est en cherchant qu'on trouve

13 réponses

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour,

    Que voulez-vous dire par "La copie est altérée"? A quel niveau?

    Votre code quelque peu modifié
    Private Sub CommandButton1_Click()
        Dim f1 As Worksheet, f2 As Worksheet, f3 As Worksheet
        Application.ScreenUpdating = False
        Set f1 = Sheets("MODELE")
        Set f3 = Sheets(4)
        'copie feuille modele - place la copie en 3eme poistion et la renomme avec la date
        f1.Copy Before:=Sheets(3)
        Set f2 = Sheets("MODELE (2)")
        f2.Name = Day(ladate) & "-" & Month(ladate) & "-" & Year(ladate) - 2000
        f2.Range("T1:X1").FormulaR1C1 = ladate
        'si la case feuille vierge n'est pas cochée, boucle sur les lignes et copie données feuille précédente
        If Me.vierge.Value = False Then
                f2.Range("E3:E8").Value = f3.Range("H3:H8").Value
                f2.Range("D3:D8").Value = f3.Range("D3:D8").Value
                f2.Range("I3:I8").Value = f3.Range("I3:I8").Value
                f2.Range("J3:J8").Value = f3.Range("J3:J8").Value
                
                f2.Range("E10:E20").Value = f3.Range("H10:H20").Value
                f2.Range("D10:D20").Value = f3.Range("D10:D20").Value
                f2.Range("I10:I20").Value = f3.Range("I10:I20").Value
                f2.Range("J10:J20").Value = f3.Range("J10:J20").Value
                
                f2.Range("D25:D37").Value = f3.Range("D25:D37").Value
                f2.Range("E25:E37").Value = f3.Range("E25:E37").Value
                f2.Range("F25:F37").Value = f3.Range("F25:F37").Value
                f2.Range("G25:G37").Value = f3.Range("G25:G37").Value
        End If
        f2.Shapes("CommandButton1").Delete
        Unload UserForm2
        Set f1 = Nothing
        Set f2 = Nothing
        Set f3 = Nothing
    End Sub


    Cdlt
    0
  2. safach Messages postés 293 Statut Membre 2
     
    Bonjour Frenchie83
    merci de votre réponse

    si vous essayer de créer une nouvelle feuille l'onglet modèle est copié , la désignation aussi est copiée de l'onglet qui le précède mais les compteurs ne sont pas copiés de la façon souhaitée
    en fait je veux que le colonne des derniers compteurs I de l'onglet 02/09/19 se met dans le colonne des premiers compteurs E de la feuille créée 03/09/19
    merci encore
    bien cordialement

    0
  3. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonsoir,

    en fait je veux que le colonne des derniers compteurs I de l'onglet 02/09/19 se met dans le colonne des premiers compteurs E de la feuille créée 03/09/19
    mais ceci n'apparaissait pas dans le code de votre fichier d'origine. A l'origine on peut voir que c'est la colonne H et non pas la colonne I qui est recopiée en E, si le problème n'est que là, remplacez H par I.
    f2.Range("E3:E8").Value = f3.Range("I3:I8").Value
    f2.Range("E10:E20").Value = f3.Range("I10:I20").Value

    Je pense que le code est suffisamment simple et limpide pour que vous puissiez le faire vous-même.

    Cdlt
    0
  4. safach Messages postés 293 Statut Membre 2
     
    Bonsoir,
    je ne suis pas l'auteur du code; le fichier fonctionnait parfaitement mais il y avait un ajout de colonnes et tout d'un coup ça ne fonctionne plus comme avant
    j'essayé de remplacer H par I mais en activant la macro ça déclenche la copie du colonne I du 02/09/19 au colonne I du 03/09/19 pas dans le colonne E du 03/09/19 crée
    merci de votre aide
    bien cordialement
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour,

    Pouvez_vous me montrer le code que vous avez écrit?

    Cdlt
    0
  7. safach Messages postés 293 Statut Membre 2
     
    Bonjour,

    Sub transfert2()
    Dim Ligne As Long
    'desactive rafraichissement écran
    Application.ScreenUpdating = False
    mess = ""
    ladate = CDate(Range("T1"))
    'boucle sur les lignes de la feuille de production
    For lg = 3 To 20
    Windows("production.xlsm").Activate
    'si designation non vide
    If Range("D" & lg) <> "" Then
    ' nom de la piece
    piece = Range("D" & lg)
    'quantité à transferer
    quantite = Range("U" & lg)
    'cadence à transférer
    cadence = Range("I" & lg)
    'machine à transférer
    machine = Range("B" & lg)
    ' active classeur suivi
    Windows("suivi des livraisons.xlsm").Activate
    exi = 0
    'boucle sur les feuilles de suivi
    For y = 1 To ActiveWorkbook.Sheets.Count
    'si une feuille porte le nom de la piece exi=1
    If ActiveWorkbook.Sheets(y).Name = piece Then exi = 1
    Next y
    ' si exi=0 pas de correspondance - piece ajoutée au futur message d'erreur
    If exi = 0 Then
    mess = mess & piece & Chr(10)
    'sinon recherche ligne de la date dans feuillede suivi et copie quantité
    Else
    ActiveWorkbook.Sheets(piece).Select
    ActiveWorkbook.Sheets(piece).Range("G2") = cadence
    ActiveWorkbook.Sheets(piece).Range("F2") = machine
    Ligne = ActiveWorkbook.Sheets(piece).Columns(1).Find(DateValue(ladate), , , xlByColumns, xlPrevious).Row
    ActiveWorkbook.Sheets(piece).Range("B" & Ligne) = quantite
    End If
    End If
    Next lg
    ' message à afficher
    If mess <> "" Then aff = "PIECES NON TRANSFEREES SUITE A ERREUR :" & Chr(10) & mess Else aff = "Transfert complet effectué"
    MsgBox aff
    ' réactivation rafraichissement écran
    Application.ScreenUpdating = True
    End Sub

    0
  8. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Arrêtez tout, je crois qu'on ne parle pas de la même chose.

    Moi, ce que je comprends, c'est que dans la feuille "MODELE", il y a un bouton "Créer nouvelle feuille" qui lorsque l'on clique dessus ouvre un UserForm qui demande de saisir une date et lors de la validation cela crée une nouvelle feuille(si "feuille vierge" n'est pas coché) avec recopie des données de certaines colonnes de la dernière création.
    Le programme lié à ce bouton de validation est dans le module du UserForm2, et c'est ce programme qui s'occupe de faire le nécessaire, création de la nouvelle feuille et recopie des cellules des colonnes demandées( H, D, E, I, J). De mon côté, je n'ai fais que le modifier pour l'adapter à votre demande.

    Je n'ai jamais regardé la macro que vous me montrez, Comment la lancez-vous?
    Pour qu'on se comprenne bien, je vois retourne votre fichier et faites des essais en cliquant sur le bouton "Créer nouvelle feuille" dans la feuille "MODELE". Peut-être qu'à partir de là on parlera de la même chose sinon on va tourner en rond encore longtemps. Si ce n'est pas ce que vous attendez, alors donnez un descriptif précis sur la façon dont vous procédez.

    https://mon-partage.fr/f/CuTChd12/

    Cdlt
    0
  9. safach Messages postés 293 Statut Membre 2
     
    Rebonjour,

    pour éviter toute confusion ci joint le document fonctionnel mais reste le problème suivant
    je veux qu'au lieu de copier les colonnes E et I de la dernière création vers l'onglet crée, je veux copier le colonne I de la dernière création vers le colonne E de l'onglet crée
    la copie des désignations , des cadences et de l'onglet "MODELE" est déja fait
    merci beaucoup pour votre aide
    bien cordialement

    https://mon-partage.fr/f/hwyJQ28Z/

    0
  10. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Vous me renvoyez le même fichier qu'au début, mais avez-vous testez le fichier que je vous ai retourné?

    De plus vous n'avez pas répondu à ma question:
    -concernant la macro "transfert2", Comment la lancez-vous? et donnez un descriptif précis sur la façon dont vous procédez.
    0
  11. safach Messages postés 293 Statut Membre 2
     
    oui je l'ai testé
    https://mon-partage.fr/f/SVUwcu5G/
    ça ne donne pas le résultat souhaité
    en fait vous trouverez suivant ce deuxième lien un essai qui montre le résultat attendu sauf je veux modifier la copie des compteurs comme j'ai précédemment détaillé càd copier le colonne I de l'onglet 02/09/19 vers le colonne E de l'onglet 03/09/19
    https://mon-partage.fr/f/pfLKm5K0/

    0
  12. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour,

    Désolé, je n'avais pas envoyé le bon fichier.
    https://mon-partage.fr/f/Q7oPizNx/

    Private Sub CommandButton1_Click()
        Dim f1 As Worksheet, f2 As Worksheet, f3 As Worksheet
        Dim DerLig_f2 As Long
        Application.ScreenUpdating = False
        Set f1 = Sheets("MODELE")
        Set f3 = Sheets(4)
        'copie feuille modele - place la copie en 3eme poistion et la renomme avec la date
        f1.Copy Before:=Sheets(3)
        Set f2 = Sheets("MODELE (2)")
        f2.Name = Day(ladate) & "-" & Month(ladate) & "-" & Year(ladate) - 2000
        f2.Range("T1:X1").FormulaR1C1 = ladate
        'si la case feuille vierge n'est pas cochée, boucle sur les lignes et copie données feuille précédente
        DerLig_f2 = f2.[A2].End(xlDown).Row
        If Me.vierge.Value = False Then
            f2.Range("E3:E" & DerLig_f2).Value = f3.Range("I3:I" & DerLig_f2).Value
            f2.Range("D3:D" & DerLig_f2).Value = f3.Range("D3:D" & DerLig_f2).Value
            f2.Range("J3:J" & DerLig_f2).Value = f3.Range("J3:J" & DerLig_f2).Value
        End If
        f2.Shapes("CommandButton1").Delete
        Unload UserForm2
        Set f1 = Nothing
        Set f2 = Nothing
        Set f3 = Nothing
    End Sub


    Dans la nouvelle feuille, j'ai supprimer les données de la colonne I (qui sont maintenant en E)

    dlt
    0
  13. safach Messages postés 293 Statut Membre 2
     
    Bonjour,
    merci de votre réponse
    mais ça donne le même résultat: la copie des fausses compteurs
    le lien de mon essai
    https://mon-partage.fr/f/7ZVhvoGP/
    bien cordialement
    0
  14. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Désolé, mais ce n'est pas le dernier fichier que j'ai déposé dernièrement (voir post 11).
    0