Erreur de copie de données

Résolu/Fermé
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 - 13 sept. 2019 à 14:49
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 17 sept. 2019 à 15:26
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

A voir également:

13 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
15 sept. 2019 à 06:54
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
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
Modifié le 15 sept. 2019 à 17:43
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
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
15 sept. 2019 à 19:15
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
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
15 sept. 2019 à 19:25
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
16 sept. 2019 à 07:06
Bonjour,

Pouvez_vous me montrer le code que vous avez écrit?

Cdlt
0
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
16 sept. 2019 à 10:31
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
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
16 sept. 2019 à 11:06
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
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
Modifié le 16 sept. 2019 à 11:46
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
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
16 sept. 2019 à 12:04
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
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
16 sept. 2019 à 12:28
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
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
17 sept. 2019 à 05:46
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
safach Messages postés 252 Date d'inscription jeudi 27 août 2015 Statut Membre Dernière intervention 13 mars 2021 2
17 sept. 2019 à 12:45
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
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
17 sept. 2019 à 15:26
Désolé, mais ce n'est pas le dernier fichier que j'ai déposé dernièrement (voir post 11).
0