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

  • Votes
  • Date
  • Date décroissante
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. 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
    1. 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. 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
      2. 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
      3. 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. 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