Probleme code VBA dans une macro

Résolu
SEB8791 Messages postés 35 Statut Membre -  
SEB8791 Messages postés 35 Statut Membre -
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,

2 réponses

  1. Utilisateur anonyme
     
    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
    1. SEB8791 Messages postés 35 Statut Membre
       
      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
    2. Utilisateur anonyme > SEB8791 Messages postés 35 Statut Membre
       
       
      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
    3. Seb8791
       
      Mais que c'est gentil tout ça

      Merci vraiment beaucoup du temps consacré

      Je regarde ça tout de suite

      Merci encore
      0
    4. SEB8791 Messages postés 35 Statut Membre
       
      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
    5. Utilisateur anonyme > SEB8791 Messages postés 35 Statut Membre
       
       
      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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. SEB8791 Messages postés 35 Statut Membre
       
      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
    2. SEB8791 Messages postés 35 Statut Membre
       
      Merci de ton retour, je t'ai répondu ci dessous :)
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Mot de passe VBA PTGB2016 incorrect
      0
    4. SEB8791 Messages postés 35 Statut Membre
       
      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
    5. SEB8791 Messages postés 35 Statut Membre > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Merci de ton retour ☺
      0