Problème avec l'archivage de mes données
Bonjour,
Je suis actuellement sur un projet d'archivage des données d'un fichier excel dans lequel se trouve des documents à remplir puis à vider une fois l'archivage sur une deuxième feuille réalisé
J'ai essayer avec ce petit bout de programme mais j'ai constamment l'erreur 1004 qui revient sur la les lignes de copier coller (Sheets("Données").Range(Cells ....).
Pouvez-vous m'aidez ?
Sub Archiver()
ligne = Sheets("Données").Range("A1").End(xlDown).Row + 1
Sheets("Données").Range("A1").Value = ligne
Worksheets("Données").Activate
Worksheets("Moule MA").Activate
Sheets("Données").Range(Cells(1, ligne)).Value = Sheets("Moule MA").Range("E4").Value
Sheets("Données").Range(Cells(2, ligne)).Value = Sheets("Moule MA").Range("K5").Value
Sheets("Données").Range(Cells(3, ligne)).Value = Sheets("Moule MA").Range("W56").Value Or Sheets("Données").Range(Cells(3, ligne)).Value = Sheets("Moule MA").Range("AP105").Value
Sheets("Données").Range(Cells(4, ligne)).Value = Sheets("Moule MA").Range("Z56").Value Or Sheets("Données").Range(Cells(4, ligne)).Value = Sheets("Moule MA").Range("AT104").Value
Sheets("Données").Range(Cells(5, ligne)).Value = Sheets("Moule MA").Range("V63").Value Or Sheets("Données").Range(Cells(5, ligne)).Value = Sheets("Moule MA").Range("AZ106").Value
Sheets("Données").Range(Cells(6, ligne)).Value = Sheets("Moule MA").Range("V70").Value Or Sheets("Données").Range(Cells(6, ligne)).Value = Sheets("Moule MA").Range("AZ104").Value
Sheets("Données").Range(Cells(7, ligne)).Value = Sheets("Moule MA").Range("F7").Value
End Sub
Cordialement,
Mehdi
Bonjour,
Il y a pas mal de choses qui ne vont pas dans ton code :
1. L'instruction pour déterminer la valeur de "ligne" risque de poser problème en cas de présence de ligne vide
2. Activer successivement 2 feuilles est inutile (cela revient à activer directement la seconde), surtout si tu précises à chaque fois la feuille devant les objets que tu manipules (Sheets("Truc").Range("Machin")...). Dans ce cas l'activation ne sert à rien.
3. Il faut choisir ta syntaxe entre utiliser Range("A1") et Cells(1, 1)...
4. La syntaxe de tes "Or" n'est pas bonne, ils s'utilisent dans des structures conditionnelles telles que "If...Then...(Else)...End If". Dans quelle(s) condition(s) doit-on réaliser l'instruction située après tes "Or" ?
Une proposition de code, simplifié :
Sub Archiver()
Dim ligne As Long
Worksheets("Moule MA").Activate 'En l'absence de précision, les cellules se rapportent à cette feuille
With Sheets("Données") 'Tout objet commençant par "." s'y rapporte
ligne = .Range("A" & Rows.Count).End(xlDown).Row + 1 'Première ligne vide
.Range("A1").Value = ligne
.Range("A" & ligne) = Range("E4")
.Range("B" & ligne) = Range("K5")
.Range("C" & ligne) = Range("W56")
.Range("D" & ligne) = Range("Z56")
.Range("E" & ligne) = Range("V63")
.Range("F" & ligne) = Range("V70")
.Range("G" & ligne) = Range("F7")
End With
End SubDu coup j'ai essayé avec tes conseils et repris le code
Ça me va mieux maintenant merci !!.