Transfère de lignes via une macro sur une autre feuille de mon classeur

Tiftouf

XLDnaute Nouveau
Bonjour à tous,

Débutant en VBA, mon entreprise me demande de mettre au point un fichier de facturation automatisé.

Le fichier à bien avancé, cependant je reste bloqué sur deux points qui sont nécessaires à la bonne marche de ce dernier :

1) je souhaite pouvoir transférer les lignes de chaque factures vers la feuille de saisies pour ainsi la faire basculer dans l'onglet caisse.

2)Dans cet onglet caisse, je souhaite pouvoir avoir en fonction de l'onglet date de paiement (non renseigné), avoir l'ensemble des factures encore en attente.

D'avance merci pour votre aide

PS : fichier présenté en codir lundi je compte sur votre réactivité :)
 
Dernière édition:

TempusFugit

XLDnaute Impliqué
Re : Transfère de lignes via une macro sur une autre feuille de mon classeur

Tout est déjà expliqué dans la macro, non ?
(voir les commentaires en vert dans celle-ci)
Relire mon message de 9h58.

J'attends ta pièce jointe modifiée (qui inclut un onglet Débit et un onglet Crédit)
 

TempusFugit

XLDnaute Impliqué
Re : Transfère de lignes via une macro sur une autre feuille de mon classeur

Tu as cherché à comprendre ce que veut dire le 5 dans la ligne ci-dessous
.Cells(j, "B").Resize(, 5).Copy Sheets("SAISIE").Range("A65536").End(xlUp)(2)

Change ce 5 avec le nombre de colonnes adéquat.

(Post scriptum; ton fichier n'a pas été joint)
 

TempusFugit

XLDnaute Impliqué
Re : Transfère de lignes via une macro sur une autre feuille de mon classeur

NomsFeuilles = Array("BLV") ' ici mettre le nom des feuilles concernées
J'ai pourtant mis le nom feuille au pluriel :rolleyes:

Si tu mets une seule feuille, tu n'auras les valeurs que d'une seule feuille
ici la feuille BLV.

Si tu veux toutes les feuilles, remplir NomsFeuilles avec le nom de toutes les feuilles.
 

TempusFugit

XLDnaute Impliqué
Re : Transfère de lignes via une macro sur une autre feuille de mon classeur

Ma macro a été faite pour répondre à :
1) je souhaite pouvoir transférer les lignes de chaque factures vers la feuille de saisies pour ainsi la faire basculer dans l'onglet caisse.

Maintenant si tu changes les conditions en cours de route, il faut une autre macro.

Quel est donc le problème alors avec le code que je t'ai proposé ?

Avec
.Cells(j, "B").Resize(, 11).Copy Sheets("SAISIE").Range("A65536").End(xlUp)(2)

Je récupère les commentaires
 
Dernière édition:

Tiftouf

XLDnaute Nouveau
Re : Transfère de lignes via une macro sur une autre feuille de mon classeur

Aucun problème la modification d'une nombre de colonne est bonne, j'aimerais juste savoir comment faire apparaitre mes facture soit en débit soit en crédit ?
De plus, est il possible de mettre en évidence les factures encore ouvertes.

Ps : ta macro est super et tu m'as beaucoup aidé et je t'en remercie
 

TempusFugit

XLDnaute Impliqué
Re : Transfère de lignes via une macro sur une autre feuille de mon classeur

Alors ????
Pourquoi avais-tu poster ce message ?
Ci joint ma pièce modifiée comme tu le remarquera, toutes les données ne sont pas transférer.

Encore une fois
J'ai juste une dernière question afin d'alimenter un onglet débit ou crédit en fonction du signe sur la fiche de saisie comment faire ?

Modifie ta pièce jointe de telle sorte que tes données exemples fassent appraitre ce "signe".
Ce qui n'est pas le cas actuellement.
 

Tiftouf

XLDnaute Nouveau
Re : Transfère de lignes via une macro sur une autre feuille de mon classeur

J'ai posté ce message avant que tu m'expliques la signification du chiffre 5 dans ta macro

Concernant le champs débit et crédit je t'ai mis des opération en -.

Merci
 

Pièces jointes

  • Copie de Test_V3 (2).zip
    66.5 KB · Affichages: 22

TempusFugit

XLDnaute Impliqué
Re : Transfère de lignes via une macro sur une autre feuille de mon classeur

Essaies cette macro modifiée pour le débit et crédit

Code:
Sub Transfert_BLV2()
Dim NomFeuilles, i As Byte, j As Long, a As Range
NomsFeuilles = Array("BLV") ' ici mettre le nom des feuilles concernées
For i = 0 To UBound(NomsFeuilles)
With Sheets(NomsFeuilles(i))
For j = 14 To 88
If Not .Cells(j, "C") Like "Code" Then
Set a = Sheets("SAISIE").Range("A65536").End(xlUp)(2)
.Cells(j, "B").Resize(, 11).Copy a
a.Offset(, (IIf(.Cells(j, "I") < 0, 10, 12))) = .Cells(j, "I")
Set a = Nothing
End If
Next j
End With
Next i
End Sub

Si tu as des questions concernant le code, n'hesites pas.
 

Discussions similaires

Statistiques des forums

Discussions
312 679
Messages
2 090 855
Membres
104 677
dernier inscrit
soufiane12