Création d'une macro

Bonjour,

Je travaille sur un document excel afin de faire de la facturation et je voudrais savoir si il est possible de faciliter cette facturation à l'aide d'une macro.

Je m'explique, mon document se compose :

- d'une première feuille qui contient la base de donnée avec les renseignements des personnes à facturer, nom, adresse ...

- d'une seconde feuille qui est ma facture mise en page et prête à imprimer, lorsque je rentre le nom d'une personne dans une cellule particulière la totalité de la facture se remplie selon la base de donnée, à l'aide de la fonction =recherchev liée à la feuille 1.

Mon idée serait de créer une macro qui ferait descendre d'une ligne à la fois la première colonne de ma première feuille et d'affecter cette macro a une forme de flèche sur ma feuille n°2.

Je ne sais pas si c'est très clair, mais lors de ma facturation je rentre la formule ='Feuille1'!A1 qui correspond au premier nom de ma liste, l'idée serait qu'en appuyant sur un "bouton" la formule devienne ='Feuille1'!A2 et ainsi de suite, tout en restant sur la feuille de facturation, pour ne pas avoir à changer de feuille à chaque fois ce qui me fait perdre un temps fou.

C'est la première fois que je pose une question ici, j'espère avoir été assez claire et que quelqu'un arrivera à résoudre mon problème.

Merci beaucoup d'avance

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    Dans ta feuille 2, insert un flèche. Ensuite clic droit sur ta flèche puis "Affecter une macro...", "Nouvelle"

    Puis colle ça :

    Sub Descendre()

    Sheets("Feuil1").Select 'Selection de la feuille 1
    Rows("1:1").Select 'Selection de la ligne 1
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'Insertion d'une nouvelle ligne
    Range("A1").Select
    Sheets("Feuil2").Select 'Selection de la feuille 2

    End Sub

    Si un message du style : "L'indice n'appartient pas à la sélection, modifie le nom des feuilles (Feuil1, Feuil2) entre guillemets dans la macro.

    J'espère que c'est bien ce que tu souhaitais ;)
    1. Merci de votre réponse, je viens d'essayer mais ce n'est pas tout à fait ce dont je parlais, je pense que j'ai du mal à expliquer mon idée.

      L'idée est de se placer dans la colonne 1 et de descendre de ligne simplement, la feuille 1 est remplie de données et je voudrais qu'en cliquant sur ma forme, la cellule sélectionnée sur ma première feuille descende.

      En gros, que ma cellule dans la feuille 2 passe de =Feuille 1 A1 à = Feuille 1 A2 et ainsi de suite
    2. Essaye avec ça :

      Sheets("Feuil1").Select
      ActiveCell.Offset(1, 0).Select
      Sheets("Feuil2").Select

      Par contre sélectionne bien une cellule A, car la macro sélectionne la cellule en dessous de la cellule active (la cellule sélectionnée au départ)
    3. Merci pour votre aide, j'ai trouvé une solution

      Sub Facture()
      Dim Plage As Range, C As Range
      With Sheets("BDD 2018")
      Set Plage = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
      End With
      With Sheets("Facture")
      If .[E6] = "" Then
      .[E6].Value = Plage(1, 1)
      Else
      Set C = Plage.Find(.[E6])
      If C Is Nothing Then
      MsgBox "Saisie incorrecte"
      Exit Sub
      End If
      Set C = C.Offset(1)
      If C = "" Then
      MsgBox "Traitement terminé"
      Exit Sub
      Else
      .[E6] = C.Value
      End If
      End If
      End With
      End Sub
  2. Bonjour à tous les deux

    Pas très clair, et si macro il doit y avoir, il faut connaitre la structure exacte des données
    Peux tu envoyer un bout de ton fichier sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
    1) Tu vas dans https://www.cjoint.com/
    2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
    3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
    4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
    en bleu souligné ; tu le sélectionnes et tu fais "Copier"
    5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".

    Cdlmnt