Macro visual Basic sur excel

Bonjour,

Je voudrais faire un échéancier sur excel cu que c est un tableur cela devrait être simple. Je voudrais un style zonelist ou tu indique le montant que tu régles et le systéme doit être capable de ranger cette information en D2 + la date de réglement mais si D2 est déja pris il doit alors la mettre en d3 etc

Merci par avance de votre aide

Didwin
Configuration: Windows Vista Internet Explorer 7.0

6 réponses

Résumé de la discussion

On souhaite un échéancier Excel où le montant et la date de règlement sont inscrits dans D2, puis dans D3 si la cellule est déjà occupée. Plusieurs propositions abordent l'emploi d'une macro ou d'un formulaire utilisateur pour gérer la saisie, ainsi qu'un code qui parcourt les cellules de la colonne D jusqu'à trouver la première vide. Des solutions évoquent une macro avec userform, des vérifications de saisie et des ajustements sur la feuille 'feuil2' ou l'étiquette 'échéancier', notamment pour gérer les erreurs de saisie. En cas d'évolution du besoin, des échanges abordent la personnalisation des noms des zones d'entrée et le déplacement des données vers une autre feuille, tout en précisant les limites des droits de macro.

Bobot (l’IA à votre service)
  1. Bonjour à toi,

    Je ne comprends pas très bien ton problème, peux-tu donner un exemple?
    1. Salut,

      Alors je vais essayer d'être clair dans mon exemple : voila j ai un prêt de 4500 euros . Ce mois, je veux enregistrer un paiement de 150 euros donc cette somme dois s incrire (exemple en b5) Dans la colonne B vont figurer tous mes remboursements. Donc le premier va aller dans b5 alors je voudrais une petite macro qui indique que si B5 est déja pris qu il mette l'information en B6 et ainsi de suite.
      J espère que tu arrives a voir ce que je veux dire sinon recontacte moi.
      Bonnes fetes de fin d années

      Didwin
  2. Bonjour,

    ça ne serait pas plus simple que tu regardes la 1ere case de vide de la colonne B et avec ta souris cliquer dessus?
    Parce du code pour voir si une case est vide, c'est riche.

    Sinon j'ai tres mal compris ta requette. Dans ce dernier cas Pourrais tu nous eclaircir un peut mieux.

    cordialement
    1. re

      quelque chose com ca serais le plus simple

      i=1
      miseajour = false
      do until i = 1 or miseajour = false
      if cells(i,4).value <>"" then
      ...
      ...
      ...
      miseajour = true
      else
      i = i+1
      end if
      loop
      1. alors d accord pours tes infos mais que dois faire ? est ce que je créé une macro ? je te préviens je suis novice mais merci d avance pour ton aide

        Didwin
    2. Contributeur
      Bonjour

      essaies cette macro qui te demande le montant puis la date de prise en compte
      le montant s'écrit dans la colonne D et la date dans la colonne E à la 1° ligne vide

      Sub rembourser()
      Dim montant, jour, ligvide As Integer
      
      montant = InputBox("montant à inscrire")
      If montant = "" Or Not IsNumeric(montant) Then Exit Sub
      
      jour = InputBox("date de prise en compte sous la forme jj/mm/aa")
      If Not jour Like "##/##/##" Then Exit Sub
      
      ligvide = Range("D1000").End(xlUp).Row + 1
      Cells(ligvide, 4) = montant
      Cells(ligvide, 5) = Format(jour, "dd/mm/yy")
      End Sub
      


      Pour installer (XL<2007)
      fais un "copier" de cette macro
      va dans VBE avec Alt+F11
      insertion-module
      coller
      retourne sur ta feuille
      dans barre d'outils formulaire sélectionne le bouton et dessine le sur la feuille
      et affecte le à la macro
      1. merci de ton aide vraiment génial

        mais dis moi, si je veux mettre mon échéancier sur la feuill2 ce dois je changer dans ma formule.

        merci et bonne fête

        Didwin
      2. Bonjour Michel,

        Merci pour l info cela marche c est super. Maintenant je voudrais faire un 2ème bouton qui devrait me permettre de modifier une échéance ( ex : erreur sur le montant) . Peux tu encore m'aider.

        merci par avance

        Didwin
      3. Contributeur
        @didwinbonjour,

        je regarde ca cet aprèm: un peu de patience... merci ;-)
      4. @michel_mMichel,

        Juste une petite question, sur ton premier programme cela fonctionne bien mais si je voulais que la date et la somme soient incrite sur ma feuil2 (appelé échéancier) que dois-je changer.

        Merci par avance

        Didwin
      5. Contributeur
        @didwinBonjour,

        les plus simple serait d'executer le code en étant déjà sur la feuille voulue (ce code fonctionne sur la feuille active)
        Sinon, modifier comme ceci :
        Sub rembourser()
        Dim montant, jour, ligvide As Integer
        
        montant = InputBox("montant à inscrire")
        If montant = "" Or Not IsNumeric(montant) Then Exit Sub
        
        jour = InputBox("date de prise en compte sous la forme jj/mm/aa")
        If Not jour Like "##/##/##" Then Exit Sub
        
        Sheets("échéancier").Activate
        
        ligvide = Range("D1000").End(xlUp).Row + 1
        Cells(ligvide, 4) = montant
        Cells(ligvide, 5) = Format(jour, "dd/mm/yy")
        End Sub
    3. et bien sur mise a jour du champ ou tu rentre t info tu met le code suivant:

      i=1
      miseajour = false
      do until i = 1 or miseajour = false
      if worsheets"nom de ta feuille".cells(i,4).value ="" then
      worsheets"nom de ta feuille".cells(i,4).value = montant tapé je ne c pas ou
      miseajour = true
      else
      i = i+1
      end if
      loop
      1. i=1
        miseajour = false
        do until i = 1 or miseajour = false
        if worsheets"feuil2".cells(i,4).value ="" then
        worsheets"feuil2".cells(i,4).value = montant tapé je ne c pas ou
        miseajour = true
        else
        i = i+1
        end if
        loop