macro copie

malek-farid

XLDnaute Junior
J’ai un fichier facture et une macro qui me copie le détaille de la facture le seul problème et que le N° de facture et le Mois ne sont pas sur tout les lignes

Merci de m’indiquer la démarche à suivre
 

Pièces jointes

  • FACTURE.xls
    27 KB · Affichages: 52
  • FACTURE.xls
    27 KB · Affichages: 58
  • FACTURE.xls
    27 KB · Affichages: 55

patsyl60

XLDnaute Occasionnel
Re : macro copie

Bonjour malek-farid,

J'ai eu le même problème il y a quelques temps. Voici la solution :

Sheets("Feuil3").Select
'de la cellule A1 à la cellule B(dernière ligne de C)
With Range("A1:B" & [C65000].End(xlUp).Row)
'les cellules vides ont la formule =cellule du dessus
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
End With

En pièce jointe ton fichier modifié.

A+

Patsyl60
 

Pièces jointes

  • test FACTURE.xls
    26 KB · Affichages: 51
  • test FACTURE.xls
    26 KB · Affichages: 47
  • test FACTURE.xls
    26 KB · Affichages: 47
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : macro copie

Bonjour patsyl60, malek-farid,
malek-farid, ce genre da code n'est pas tout à fait à sa place dans le ThisWorboock
Une proposition (le code n'est pas très beau, mais il fonctionne) à mettre dans un bouton. Voir pièce jointe.
Code:
Private Sub CommandButton1_Click()
Dim i As Long
With Sheets("Feuil3")
Sheets("Feuil1").Range("c16:G21").copy .Range("c" & .[A65536].End(xlUp).Row + 1)
For i = 1 To 6
    Sheets("Feuil1").Range("G10").copy .Range("A" & .[A65536].End(xlUp).Row + 1)
    Sheets("Feuil1").Range("G8").copy .Range("B" & .[B65536].End(xlUp).Row + 1)
Next i
End With
End Sub
Cordialement
 

Pièces jointes

  • FACTURE(2).xls
    26.5 KB · Affichages: 49

Efgé

XLDnaute Barbatruc
Re : macro copie

Re
...le code n'est pas très beau, mais il fonctionne...
Même si sans nouvelles de malek-farid on peut penser que ma proposition lui a convenue, je suis tétu.
J'ai donc essayé une amélioration...
Code:
Private Sub CommandButton1_Click() 'Version boucle
Deb = Timer
Application.ScreenUpdating = False
With Sheets("Feuil1")
NbrLign = .Range("C" & Application.Rows.Count).End(xlUp).Row
    .Range("C12:G" & NbrLign).copy Range("c" & [C65536].End(xlUp).Row + 1)
        For i = 1 To NbrLign - 11
            Range("A" & [A65536].End(xlUp).Row + 1) = .Range("G10")
            Range("B" & [B65536].End(xlUp).Row + 1) = .Range("G8")
        Next i
End With
Application.ScreenUpdating = True
MsgBox Timer - Deb
End Sub
... qui ne m'a pas embalée non plus.
Donc ma version finale (c'est mon premier tableau VBA :eek:):
Code:
Private Sub CommandButton2_Click() 'Version tableau
Deb = Timer
Dim Tableau()
With Sheets("Feuil1")
    NbrLign = .Range("C" & Application.Rows.Count).End(xlUp).Row - 11
    ReDim Tableau(1 To NbrLign, 1 To 7)
        For i = 1 To UBound(Tableau, 1)
            Tableau(i, 1) = .Cells(10, 7)
            Tableau(i, 2) = .Cells(8, 7)
                For j = 3 To UBound(Tableau, 2)
                    Tableau(i, j) = .Cells(i + 11, j)
                Next j
        Next i
    Range("A" & Range("A" & Application.Rows.Count).End(xlUp).Row + 1).Resize(UBound(Tableau, 1), 7) = Tableau
End With
MsgBox Timer - Deb
End Sub
Le Timer parle de lui-même :p.
Cordialement
P.S : J'ai laissé dans le Thisworkbook la macro d'origine
P.S 2 : Je suis passé à 1 000 lignes pour que ce soit significatif
 

Pièces jointes

  • FACTURE(4).zip
    35.5 KB · Affichages: 31

Staple1600

XLDnaute Barbatruc
Re : macro copie

Bonsoir Efgé

Joli code

Mais dans ton exemple tu n'as qu'une seule facture (la N° 25)

et qui fait 1000 lignes :confused:

J'ai compris la question comme ceci pour ma part

La feuille 1 est une sorte de "masque de saisie" et quand on a finit de remplir la facture , en cliquant sur un bouton , on archive les éléments de cette facture en feuille 2 etc....
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : macro copie

Bonsoir Staple1600,
En effet, on peut interpréter la demande autrement. Je me suis basé sur l'exemple du post1.
Pour les 1 000 lignes (grosse facture ou très détaillée :p), il s'agissait seulement de regarder les différents temps de traitement car sur 5 lignes, ce n'est pas évident.
Sur ce, merci du compliment :eek:.
Cordialement
 

patsyl60

XLDnaute Occasionnel
Re : macro copie

Bonsoir Efgé, Bonsoir Staple1600,

N'ayant pas eu de nouvelles de malek-farid, j'ai moi aussi fait évoluer mon code.

J'ai compris commeStaple1600 que la feuil1 est un masque de saisie et ensuite cela cumule dans la feuille 3.

Je vous joint mon fichier.

Dites moi ce que vous en pensez... N'ayez pas peur des critiques, je suis preneur ,si je peux m'améliorer.

A+

Patsyl60
 

Pièces jointes

  • test FACTURE.xls
    42.5 KB · Affichages: 54
  • test FACTURE.xls
    42.5 KB · Affichages: 57
  • test FACTURE.xls
    42.5 KB · Affichages: 58

Discussions similaires

Statistiques des forums

Discussions
312 497
Messages
2 088 992
Membres
104 000
dernier inscrit
dinelcia