Somme VBA

Bonjour. Qui peut m'aider avec ce code ? En faite ma première ligne varie tout le temps
Dim i As Long, plage As Range, résultat As Integer
 With Sheets("Facture")
For i = ? To .Range("E65356").End(xlUp).Row
    Set plage = .Range("E" & i)
    résultat = Application.WorksheetFunction.Sum(plage)
 Range("E" & Ligne) = résultat
 Range("E" & Ligne).Style = "Currency"
  Next i
 End With

8 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Un utilisateur demande de l'aide pour un code VBA qui boucle sur les lignes de la colonne E et calcule des totaux clients, le départ de la boucle et le nombre de lignes étant variables. Des réponses évoquent des problèmes liés aux cellules fusionnées et à l'erreur d'exécution '6', et préconisent de partager le fichier pour reproduction et ajustement du code. Plusieurs répondants proposent d'adapter le code aux cellules fusionnées, d'ajuster la référence des lignes et d'utiliser une zone dédiée pour les totaux lorsque le nombre de lignes par client varie. D'autres échanges soulignent l'intérêt de partager le fichier pour reproduire le problème et proposer des corrections spécifiques adaptées au contexte.

Bobot (l’IA à votre service)
  1. Bonjour,
    J'ai fait quelques modifications à cause des cellules que vous fusionnez (peut créer problème dans le code) .
    Votre fichier: https://mon-partage.fr/f/JgiRpEqm/
    Bonnes fêtes de Pâques
    1. Bonne Fetes aussi.
      Merci beaucoup. Cela fonctionne parfaitement.
      Mais pour les cellules fusionnées votre code d'AutoFit ne marche pas.
    2. @JowaanderBonsoir,
      Merci, content pour vous.
      Pour votre info le code AutoFit réalise ceci :Cette méthode modifie la largeur des colonnes de la plage spécifiée pour obtenir le meilleur ajustement.
      N'a rien à voir avec le code pour fusionner les cellules ( MergeCells ).

      Salutations.
      Le Pingou
    3. @Le PingouAh d'accord je vois. Donc si le texte dépasse, l'autre partie qui est renvoyé automatiquement à la ligne y'a pas moyen de le voir ?
      Et aussi pour la conversion du total général j'ai trouvé. Mais j'aimerais aussi si le total général se trouve par exemple à ligne 35 faire la conversion à la ligne +2
    4. @JowaanderBonjour,
      Si j’ai bien compris vous voulez placer le total général 2 lignes plus bas…
      Dans macro
      Sub TotalGeneral_Click()

      Les lignes 2 et 3 :
      Cells(ligne + 2, 4) = "TOTAL GENERAL:"
      Cells(ligne + 2, 4).HorizontalAlignment = xlRight


      Puis les dernières lignes comme suit :
      Cells(ligne + 2, 5) = tot

      'ligne = Sheets("Facture").Range("C65536").End(xlUp).Row + 2
      Cells(ligne + 2, 1) = "Arrêtée, la présente facture à la somme de :"
      Range(Cells(ligne + 2, 1), Cells(ligne, 5)).Font.Bold = True
      'ligne = Sheets("Facture").Range("A65536").End(xlUp).Row + 3
      Cells(ligne + 4, 4) = "Le Chirurgien-Dentiste"


      Salutations.
      Le Pingou
    5. @Le PingouMerci beaucoup. Juste une dernière chose. Comme vous l'avez pu apercevoir après avoir cliqué sur le bouton ajouter tous les champs se réinitialisent sauf le combobox comment remédier à cela ?
  2. Bonjour,

    En faite ma première ligne varie tout le temps
    Par le haut ou le bas?
    Pour le reste, relisez ce que vous avez écrit(je suppose que c'est vous) car y a comme une erreur entre le for et le next
    1. Comme sur l'image le nombre de lignes pour un client varie tout le temps et j''aimerais pouvoir faire le total à chaque fois
    2. @JowaanderBonjour,

      Tout a fait Thierry, mais cette feuille est remplie avec quoi?
    3. @JowaanderBonjour,
      Vous voulez donc faire le total par client en remplissant la cellule a cote de TOTAL..
    4. @f894009Exactement. Le Total pour chaque client avec VBA sachant que le nombre de lignes pour chaque client est variable
  3. Bonjour,
    Juste au passage, pouvez-vous expliquer comment vous entrez les données et passez d'un client à l'autre sur la même facture...?
    1. Bonjour LePingou,
      Ca roule?
      Serait meme preferable qu'il mette son fichier a dispo, chose que j'aurai demande apres sa reponse.
  4. Bonsoir,
    J’ai adapté et compléter votre code salon ce que j’ai compris. Je vous laisse le soin pour les essais.
    Merci de votre réponse.
    Votre fichier : https://mon-partage.fr/f/mIDqUhVx/
    1. Merci beaucoup. Oui c'est un peu cela. Mais si je dépasse 2 lignes pour un client ca marche pas. Il m'affiche "Suite en cours de travail; erreur d'execution '6' ". Le nombre de lignes pour un client est variable. ca peut être 2,3 ,7 ,5 10, etc...
  5. Bonjour,
    Désolé, mais votre message ne m'apporte aucune possibilité de comprendre ce qui se passe chez vous, le lien est incisible.
    En marge avez-vous fait le teste avec le fichier mmis à disposition....??
    1. Ouais. J'arrive toujours pas à faire pour plus de 2 lignes pour client. Ça affiche dépassement de capacité
  6. Bonjour,
    Vous ne répondez pas à ma question......En marge.......
    1. https://www.cjoint.com/c/JDkuQSRlko2
  7. Bonjour,
    Me mettre le fichier à disposition et je regarderai
    1. https://www.cjoint.com/c/JDomM14YoI3
      J'aimerai aussi remplacer le bouton Réinitialisation par Modifier. Qui me permettrai de faire la modification des saisies
    2. @JowaanderBonjour,
      Eh bien sans savoir après quelle commande se produit la faute, j'ai essayé toutes les commandes possibles et je n'ai aucune faute.
      Remarque: j'ai l'impression que votre macro ne sert à rien du tout sauf à agrandir parfois la ligne avec nom du client sans raison car il y a largement la place.......!

      Avant d’utiliser une macro pour ajuster automatiquement les cellules avez-vous essayé d’entrer un nom fictif, Le plus long possible, et regarder ce qui se passe….. ! Est-ce nécessaire de la mettre !!!!!!!!!

      Pour modifier le nom Réinitialisation par Modifier, vous ouvrez le formulaire *Form_Facture* puis clic droit sur le bouton de commande et dans la liste clic Propriétés chercher Caption et y inscrire le nouveau nom, ….puis enregistrer.

      Salutations.
      Le Pingou