Probleme code VBA dans une macro

Résolu/Fermé
SEB8791 Messages postés 24 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 avril 2024 - 5 déc. 2016 à 19:07
SEB8791 Messages postés 24 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 avril 2024 - 2 févr. 2017 à 01:48
Bonjour à tous,

Petit nouveau inscrit, vos tutos m'ont été très utiles pour mettre en place de nouveaux fichiers excel avec codes VBA.

Cependant, me voila coincé sur un tout petit point. C'est un fichier qui est créé avec une importante macro, mais mon code vba doit planter à un petit endroit.

Si jamais quelqu'un pouvait m'aider, ce serait cool et peux partager le fichier dès que besoin :D

Thanks par avance,
A voir également:

2 réponses

Utilisateur anonyme
6 déc. 2016 à 09:35
Bonjour SEB8791,

Je ne sais pas d'avance si je pourrai t'aider, mais c'est sûr que tu auras
plus de chance qu'on te réponde si tu mets ton fichier en partage, sur
le site mon-partage.fr par exemple ; ou mets au moins ici une partie
de ton code VBA : ton importante macro où ça plante, en utilisant les
balises de code ; exemple :

<code basic>

Mets ici ton code VBA

</code>

Indiques aussi le message d'erreur qui apparaît quand ça plante,
et quelle est la ligne de code surlignée en jaune dans tu cliques
sur le bouton « Déboguer » et que ça va sur Visual Basic ; mais
attention : il n'y a pas forcément de ligne surlignée en jaune.

Waiting for your next post...  ;)

Cordialement.  :)
 
0
SEB8791 Messages postés 24 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 avril 2024
8 déc. 2016 à 02:21
Salut Albkan !

Tout d'abord, quoi qu'il en soit, merci beaucoup du temps que tu as pris pour ton message :)

Je ne voulais pas sans réponse mettre ce code VBA qui m'a pris un temps fou à être fait.

Donc le voici, en brut ci dessous :

Sub ECRITURECAISSECADOR()

Dim strPw As String

strPw = "PTBG2016"

If InputBox("Saisissez le mot de passe", "Acces à la macro") <> strPw Then

MsgBox ("Mot de passe erroné")

Exit Sub

Else

MsgBox ("Mot de passe correct")

End If

If MsgBox("mettre en forme les données pour pouvoir les copier-coller dans Cador?", vbYesNo, "Lancer?") = vbYes Then

Application.Cursor = xlWait
deb = 11
l = deb

ActiveWorkbook.Sheets("Tableau Final Cador").Range("A12:K10000").Clear

For a = 12 To 15000
n = 0

If Len(ActiveWorkbook.Sheets("Banque Client").Range("D" & a).Value) > 0 Then

'Ligne encaissement


For c = 15 To 20

If Len(ActiveWorkbook.Sheets("Banque Client").Cells(a, c).Value) > 0 Then
n = n + 1

'date
ActiveWorkbook.Sheets("Tableau Final Cador").Range("B" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("C" & a).Value
'Pièce
ActiveWorkbook.Sheets("Tableau Final Cador").Range("C" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("D" & a).Value
'Compte
ActiveWorkbook.Sheets("Tableau Final Cador").Range("D" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Cells(10, c).Value
'Ref
ActiveWorkbook.Sheets("Tableau Final Cador").Range("F" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("E" & a).Value
'libellé
ActiveWorkbook.Sheets("Tableau Final Cador").Range("E" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("F" & a).Value
'debit
ActiveWorkbook.Sheets("Tableau Final Cador").Range("G" & (l + n)).Value = "0"
'credit
ActiveWorkbook.Sheets("Tableau Final Cador").Range("H" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Cells(a, c).Value
End If
DoEvents
Next c


'DIVERS
If Len(ActiveWorkbook.Sheets("Banque Client").Cells(a, 21).Value) > 0 Then
'date
ActiveWorkbook.Sheets("Tableau Final Cador").Range("B" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("C" & a).Value
'Pièce
ActiveWorkbook.Sheets("Tableau Final Cador").Range("C" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("D" & a).Value
'Compte
ActiveWorkbook.Sheets("Tableau Final Cador").Range("D" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Cells(a, 20).Value
'Ref
ActiveWorkbook.Sheets("Tableau Final Cador").Range("F" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("E" & a).Value
'libellé
ActiveWorkbook.Sheets("Tableau Final Cador").Range("E" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("F" & a).Value
'debit
ActiveWorkbook.Sheets("Tableau Final Cador").Range("G" & (l + n)).Value = "0"
'credit
ActiveWorkbook.Sheets("Tableau Final Cador").Range("H" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Cells(a, 21).Value

End If
DoEvents

'DIVERS DECAISSEMENT

If Len(ActiveWorkbook.Sheets("Banque Client").Cells(a, 22).Value) > 0 Then
n = n + 1
'date
ActiveWorkbook.Sheets("Tableau Final Cador").Range("B" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("C" & a).Value
'Pièce
ActiveWorkbook.Sheets("Tableau Final Cador").Range("C" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("D" & a).Value
'Compte
ActiveWorkbook.Sheets("Tableau Final Cador").Range("D" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Cells(a, 23).Value
'Ref
ActiveWorkbook.Sheets("Tableau Final Cador").Range("F" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("E" & a).Value
'libellé
ActiveWorkbook.Sheets("Tableau Final Cador").Range("E" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("F" & a).Value
'debit
ActiveWorkbook.Sheets("Tableau Final Cador").Range("G" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Cells(a, 24).Value
'credit
ActiveWorkbook.Sheets("Tableau Final Cador").Range("H" & (l + n)).Value = "0"

End If
DoEvents

'Ligne décaissement

For c = 25 To 48

If Len(ActiveWorkbook.Sheets("Banque Client").Cells(a, c).Value) > 0 Then
n = n + 1

'date
ActiveWorkbook.Sheets("Tableau Final Cador").Range("B" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("C" & a).Value
'Pièce
ActiveWorkbook.Sheets("Tableau Final Cador").Range("C" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("D" & a).Value
'Compte
ActiveWorkbook.Sheets("Tableau Final Cador").Range("D" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Cells(10, c).Value
'Ref
ActiveWorkbook.Sheets("Tableau Final Cador").Range("F" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("E" & a).Value
'libellé
ActiveWorkbook.Sheets("Tableau Final Cador").Range("E" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("F" & a).Value
'debit
ActiveWorkbook.Sheets("Tableau Final Cador").Range("G" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Cells(a, c).Value
'credit
ActiveWorkbook.Sheets("Tableau Final Cador").Range("H" & (l + n)).Value = "0"

End If
Next c
DoEvents


'Ligne Banque

tst = ActiveWorkbook.Sheets("Banque Client").Range("AY" & a).Value


'date
ActiveWorkbook.Sheets("Tableau Final Cador").Range("B" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("C" & a).Value
'Pièce
ActiveWorkbook.Sheets("Tableau Final Cador").Range("C" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("D" & a).Value
'Compte
ActiveWorkbook.Sheets("Tableau Final Cador").Range("D" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Cells(5, 17).Value
'Ref
ActiveWorkbook.Sheets("Tableau Final Cador").Range("F" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("E" & a).Value
'libellé
ActiveWorkbook.Sheets("Tableau Final Cador").Range("E" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("F" & a).Value

If tst = "D" Then
'debit
ActiveWorkbook.Sheets("Tableau Final Cador").Range("G" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("AZ" & a).Value
'credit
ActiveWorkbook.Sheets("Tableau Final Cador").Range("H" & (l + n)).Value = "0"

Else

'debit
ActiveWorkbook.Sheets("Tableau Final Cador").Range("G" & (l + n)).Value = "0"
'credit
ActiveWorkbook.Sheets("Tableau Final Cador").Range("H" & (l + n)).Value = ActiveWorkbook.Sheets("Banque Client").Range("AZ" & a).Value


End If

l = l + n

Else

Exit For

End If

DoEvents
Next a

DoEvents

'
Sheets("Tableau final Cador").Select

Columns("B:B").Select
Selection.NumberFormat = "mm/dd/yyyy"
'
Columns("G:H").Select
Range("H7").Activate
Selection.NumberFormat = "#,##0.00"
Range("B11").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
With Selection
.HorizontalAlignment = xlGeneral
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("B12:H12").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("B12").Select

Application.Cursor = xlDefault
End If

End Sub


Le probleme est le suivant : il n'y aucun bog, ni probleme de debogage.

Cependant, je suis pas un pro du vba et ce code est, je le reconnais, un vrai bordel.

L'idée est de créer une feuille de saisie comptable en fonction d'une feuille saisie par les clients.

Donc certaines données qu'ils mettent doivent se remettre sur une feuille type.

L'anomalie se trouve surtout concernant les deux parties divers : encaissements et décaissements. J'ai des soucis par exemple quand j'ai une colonne de remplie et pas les autres, ca me fout le bordel sur ma feuille.

Bref, je pense que si tu t'y connais, tu vas pouvoir me confirmer que mon code VBA est bien trop long et compliqué mais je m'y connais pas à fond donc ton aide pourrait m'aider :)

merci par avance :)
0
Utilisateur anonyme > SEB8791 Messages postés 24 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 avril 2024
10 déc. 2016 à 16:07
 
Bonjour SEB8791,

Je te propose ce fichier Excel 2007.

Bien sûr, par précaution, fais une copie de ton vrai fichier (celui avec les
données réelles) ; fais dans cette copie un copier / coller de ma macro,
et teste ensuite cette macro pour voir si tu as bien les résultats espérés.

Dis-moi ce que tu en penses, et si ça te convient.
Tu peux me demander une adaptation si besoin.

Si ton problème est réglé, merci d'aller en haut de page
pour cliquer sur « Marquer comme résolu ».

Cordialement.  :)
 
0
Mais que c'est gentil tout ça

Merci vraiment beaucoup du temps consacré

Je regarde ça tout de suite

Merci encore
0
SEB8791 Messages postés 24 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 avril 2024
10 déc. 2016 à 16:51
Salut Albkan,

Je vois en effet le temps de fou consacré à mon problème, c'est vraiment très gentil.

Je vois avec tes modifications mes grosses lacunes en VBA et la simplification apportée au code :) Par ailleurs, quelle rapidité gagnée sur l'exécution !

J'ai cependant, encore le soucis que la date se met sur la feuille final en format anglais ou inverse, je sais pas mais genre 05/12/2016 se met 12/05/2016 sur la feuille finale.

Par ailleurs, peux tu me dire comment faire pour avoir un copier ensuite de mon petit tableau final comme j'avais à l'origine jusque la dernière non vide après suppression des éventuelles lignes vides (vide = et débit, et crédit = 0) ?

Ce sont ces aspects qui m'ont bloqués énormément à l'origne.

Pour la RAZ du tableau, du fait que je dois paramétrer des données automatiques comme le num d'écriture, j'ai besoin que soit RAZ les colonnes B, F à M, V et X à AW.

En tout cas, merci beaucoup !
0
Utilisateur anonyme > SEB8791 Messages postés 24 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 avril 2024
10 déc. 2016 à 18:12
 
Pour la date, j'avais bien remarqué ce que tu as indiqué, mais je croyais que
c'était voulu de ta part ; donc que tu voulais une date au format anglais.

Selon tes indications, voici la nouvelle version ; seul le bas de la macro
est modifié, après l'instruction Loop.

Par précaution, fais de nouveaux tests sur une copie du fichier réel.
N'hésites pas à me demander s'il y a autre chose à changer.  ;)

À te lire.  :)
 
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
Modifié par michel_m le 8/12/2016 à 09:44
Bonjour,
Comme te l' as demandé Abkan, mets un extrait (1000 lignes environ) sur mon-partage.fr
En effet il est très délicat de travailler sur un code sans pouvoir tester les actions modifiées et d'autre part, on ne va pas passer peut-^tre 2 heures à reconstituer le classeur avec un risque énorme d'erreur
Tu nous demandes beaucoup de travail en échange, fais un effort en modifiant d'éventuelles données confidentielles
 Michel
0
SEB8791 Messages postés 24 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 avril 2024
8 déc. 2016 à 12:17
Salut Michel,

merci de ton retour, je t'ai mis le code ci-dessus, je te fournis ci dessous le lien mon partage pour accéder au fichier dans sa version brut.

Le code pour exécuter la macro est PTBG2016 et prendre le fichier est PTBG2016 en majuscules.

https://mon-partage.fr/f/JfjcEc0I/

Le problème se situe surtout au niveau du divers.

La ca fonctionne mais c'est parce que j'ai magouillé en supprimant toutes les lignes pour lesquelles quelque chose est mis en colonne divers sans montant.

C'est qqch pour les comptables, donc n'hésitez pas si besoin.

Cordialement,
0
SEB8791 Messages postés 24 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 avril 2024
8 déc. 2016 à 12:18
Merci de ton retour, je t'ai répondu ci dessous :)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
8 déc. 2016 à 17:16
Mot de passe VBA PTGB2016 incorrect
0
SEB8791 Messages postés 24 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 avril 2024
8 déc. 2016 à 19:33
Pourtant c'est le même des deux côtés
C'est en majuscule. PTBG2016.

As tu un mail que je te l'envoie sans mot de passe autrement ?
0
SEB8791 Messages postés 24 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 avril 2024 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
8 déc. 2016 à 19:33
Merci de ton retour ☺
0