Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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...

@+

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é !

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 !
 

zebanx

XLDnaute Accro
Re-

Modifié.
> Par contre, la colonne des soldes ("M") doit être fausse.
Mais c'était déjà le cas dans le tableau d'origine sauf erreur.

@+
 

Pièces jointes

  • pb_extourner_ecritures.xlsm
    39.1 KB · Affichages: 4

Yücel

XLDnaute Junior
Zebanx,

C'est bien ce que je voulais mais ça me bloque à un point, je pense que j'en demande trop à Excel lol ....

En tout cas je clôture la demande. pour ma part c'est résolu

Un super grand merci à vous deux !!!!
 

zebanx

XLDnaute Accro
OK.

Je n'ai pas compris l'histoire de date en colonne "D". Ce n'est pas un "X" qu'il faut mettre sur la première ligne ?
Que souhaitez-vous afficher dans la première ligne de la colonne D restituée svp ?
 

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 en enlevant l'espace du coup tout fonctionne exactement comme je veux c'est parfait !

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

Bonne continuation
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…