XL 2016 VBA : comptabilité extourner écriture

Yücel

XLDnaute Junior
Bonjour,

J'aurais besoin de votre précieuse aide svp.

Vous trouverez ci-joint mon fichier excel avec ma demande. J'espère avoir été claire sinon j'essayerai de donner plus d'explication.

Je vous en remercie par avance ! :)
 

Pièces jointes

  • 2- Tuto.xlsm
    34.7 KB · Affichages: 16

Rouge

XLDnaute Impliqué
Bonjour,

Essayez ceci
VB:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    DerLig = Sheets("Journal").ListObjects("Tableau1").DataBodyRange.Rows.Count
    piece = Range("F7").Value
    For i = 10 To DerLig
        If Cells(i, "C") = piece Then
            Range(Cells(i, "B"), Cells(i, "G")).Copy Cells(DerLig + 10, "B")
            Cells(DerLig + 10, "C") = piece
            Cells(DerLig + 10, "J") = "Ext. " & Cells(i, "J")
            Cells(DerLig + 10, "K") = Cells(i, "L")
            Cells(DerLig + 10, "L") = Cells(i, "K")
            Cells(DerLig + 10, "Q") = Cells(i, "Q")
            DerLig = Sheets("Journal").ListObjects("Tableau1").DataBodyRange.Rows.Count
        End If
    Next i
End Sub

Cdlt
 

zebanx

XLDnaute Accro
Bonjour Yucel, Rouge;)

Avec une méthode tablo mais moins structuré que ce qu'à indiqué rouge sur un tableau structuré (que j'utilise très/trop peu).

Je m'étonne sur de vieux souvenirs :
- que la colonne "B" ne soit pas classé en "OD" pour des extournes
- que le numéro de pièce reste inchangée et non incrémentée ou avec un libellé "Ext. 5"
Mais c'est un peux vieux... :p

@+

VB:
Private Sub CommandButton1_Click()
Dim ta(), tb(), derligne&, i&, j&, m&
'-- paramétrage
derligne = Cells(Rows.Count, 3).End(3).Row
ta = Range("B10:Q" & derligne).Value
ReDim tb(1 To derligne - 9, 1 To 16)
m = 0
'--boucle tableau
For i = 1 To derligne - 9
If ta(i, 2) = Cells(7, "F") Then
    m = m + 1
    '-- pour les cellules sans modification
    A = Array(1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 15, 16)
    For j = LBound(A) To UBound(A)
    tb(m, A(j)) = ta(i, A(j))
    Next j
    '-- pour les autres cellules
    tb(m, 9) = "Ext. " & ta(i, 9)
    tb(m, 10) = IIf(ta(i, 11) = "", "", ta(i, 11))
    tb(m, 11) = IIf(ta(i, 10) = "", "", ta(i, 10))
End If
Next i
'-- restitution
Range("B" & (derligne + 1)).Resize(m, 16) = tb
End Sub
 

Yücel

XLDnaute Junior
merci beaucoup Rose !!!!
Merci pour votre rapidité et votre qualité ! :D

J'avais oublié de préciser encore deux petites choses (désolé j'aurais du le préciser avant).


Peut-on à la première ligne recopié (et uniquement à la première ligne recopié) mettre :

1/ Colonne C : numéro de pièce précédente +1 (pour l'incrémenté)
2/ Colonne D : mettre une croix (ce qui m'indiquera qu'il faut que j'entre une date manuellement).

Vous trouverez en PJ un exemple de ma demande.

un grand merci à vous.
 

Pièces jointes

  • 2- Tuto V2.xlsm
    36.1 KB · Affichages: 4

Yücel

XLDnaute Junior
Zebanx,

Le fichier joint n'est pas l'original par confidentialité.

Il ne faut pas toucher a la colonne B (journal) car l'écriture de base sera en OD.

Il aurait juste fallu m'ajouter à la première ligne recopié (et uniquement à la première ligne recopié) :

1/ Colonne C : numéro de pièce précédente +1 (pour l'incrémenté)
2/ Colonne D : mettre une croix (ce qui m'indiquera qu'il faut que j'entre une date manuellement).

Merci à vous deux :D !
 

Yücel

XLDnaute Junior
C'était bien comme vous avez fait dans le dernier fichier, mais au lieu de dire afficher vide dans les autres lignes, il faut rien indiquer pour les autres lignes copié, est-ce possible ??

VB:
tb(m, 3) = IIf(m = 1, "X", " ")

Merci.
 

Yücel

XLDnaute Junior
Bonsoir Soan et bonne année et meilleurs vœux !!

Un grand merci à vous aussi :D en enlevant l'espace du coup tout fonctionne exactement comme je veux c'est parfait !

Merci à vous trois :D ainsi je clôture avec joie la discussion

Bonne continuation
 

Statistiques des forums

Discussions
312 025
Messages
2 084 749
Membres
102 652
dernier inscrit
Helpmeplz