Mise à jour d'un ancien fichier

Bonjour,

Je fais un test pour faire la mise à jour d'un fichier.

La Feuil1 représente l'ancienne version, la Feuil2 représente la nouvelle, j'essaie de retrouver la dernière ligne de l'ancienne version (ligne commençant avec un numéro de cycle, donc numérique, car il peut y avoir des commentaires textuels rajoutés sur la feuille) et de la retrouver sur la version récente, de copier le contenu à la suite de l'ancienne feuille.

Ca peut paraitre brouillon mais en gros il faut copier les valeurs des cellules bleues de la feuille 2, à la dernière ligne de la feuille 1 (qui peut être un commentaire ou non).

Je joint le fichier avec les deux feuilles et le code que j'ai fait.

Merci d'avance à ceux qui y jetteront un coup d'oeil.

6maj.xlsm (21.23 Ko)

Bonjour,

un tit essai à tester voir si cela peut te convenir.

Cordialement.

7maj.xlsm (24.19 Ko)

Bonjourje n'ai pas bien compris s'il faut copier par dessus le commentaire ou non, ma version copie par dessus les lignes non numériques

Sub maj()
    Dim dl&, dl2&, c(1, 1)
    a = Feuil1.[a1].CurrentRegion
    Set b = Feuil2.[a1].CurrentRegion
    dl2 = b.Rows.Count

    For i = 2 To UBound(a)
        If Not IsNumeric(a(i, 1)) Then
            dl = i
            Exit For
        End If
    Next
Feuil2.Activate
    Feuil2.Range(Cells(dl, 1), Cells(dl2, 11)).Copy Feuil1.Range("a" & dl)
Feuil1.Activate

End Sub

Salut bigdaddy154 et Force Rouge, j'ai laissé la demande hier un peu en urgence, donc je ne m'étais pas relu, c'est vrai que niveau compréhension, c'est assez violent ^^.

Pour en revenir au sujet, oui, le fichier devant être mis à jour et pas simplement copier/coller toute la feuille depuis l'autre (les utilisateurs mettant parfois des commentaires. Par exemple : dire qu'il y a eu un arrêt, une panne, qu'ils ont renversé leur café, que sais-je ^^)).

Le code de bigdaddy fonctionne sur le fichier test, on va voir ce que ça donne sur le fichier complet (ouverture de plusieurs fichiers, mise en forme, ...)

Ah et merci Force Rouge, j'arrivais pas à faire fonctionner le Copy Destination:= vers une destination variable (j'essayais avec cells(i,1) par exemple et Excel me renvoyait un message d'erreur, étant persuadé que cela ne fonctionnait qu'avec Range("A1") je m'étais donc rabattu sur le système de changement de feuilles :

Sheets("Feuil2").Activate

Sheets("Feuil2").Paste Destination:=Sheets("Feuil1").Cells(lastRow + s, 1)

Du coup, merci à vous deux, j'attend un peu de voir comment ça se présente mais je mettrai le sujet comme résolu dès que se sera bon. A plus.

Salutation...S'il y au moins un code sur deux qui est bon c'est qu'on est pas trop mauvais ! Goodjob bigdaddy

Allez, si j'étais mauvaise langue, on copie toute la ligne, il peut y avoir des choses qu'on ne voulait pas copier (en dehors du tableau ^^), mais ça ne sera pas le cas, vu que c'est enregistré par une machine, à moins d'un gros plantage, il est peu probable que ça arrive.

Une autre question, dans mon fichier, je colle aussi la mise en form, qui n'est pas la même sur les deux feuilles, si je veux copier seulement les valeurs et pas la mise en forme, dois-je repasser par les Select ? (code enregistrement macro)

Range("D14:F52").Select
    Selection.Copy
    Range("J14").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Non pas obligé

Range("D14:F52").Copy
Range("J14").PasteSpecial Paste:=xlPasteValues
Rechercher des sujets similaires à "mise jour ancien fichier"