Création d'onglets préremplis

sc66

XLDnaute Nouveau
Bonjour,

Dans le cadre de mon travail, j'ai un problème à résoudre sur excel. Je pense avoir une bonne maîtrise d'excel excepté... la programmation VBA et macros.

Mon problème: à partir d'une liste contenant des entreprises et des montants qui sont dus. Le but est de procéder à la facturation de ces entreprises.

Je souhaite qu'il y ait un onglet par entreprise, correspondant à la facture de chacune. Et donc, j'aimerai que la création d'onglets soit automatique (idéalement par un bouton) et que les onglets(=factures) créés soit préremplis selon la présentation de ma facture.

Pour être plus clair, je vous mets ci-joint ma maquette simplifiée, où seule les cases en jaune sont manuellement remplies.
Actuellement, je crée moi même autant d'onglets que j'ai d'entreprises puis je change le code dans l'onglet de l'entreprise (en A6) afin de remplir la facture.

Comment faire donc pour automatiser tout ça?

Je vous remercie par avance :),

sc66
 

Pièces jointes

  • MaquetteFacture.xls
    48.5 KB · Affichages: 91

thomlau

XLDnaute Occasionnel
Re : Création d'onglets préremplis

Bonjour SC66, le forum.

Bienvenue sur ce forum.

Voici en pièce jointe, un début de solutution à ton problème.

@ bientôt.
 

Pièces jointes

  • test.zip
    15.8 KB · Affichages: 46
  • test.zip
    15.8 KB · Affichages: 44
  • test.zip
    15.8 KB · Affichages: 42

sc66

XLDnaute Nouveau
Re : Création d'onglets préremplis

Merci beaucoup pour ces réponses!

Vos méthodes donnent les mêmes résultats à une exception près: dans la formule de camarchepas, la cellule A6 de la facture est "fixe", elle ne change pas selon le client. Or, j'ai besoin que ce numéro change et soit propre à chaque client. Ainsi, si je change le montant facturé, avec une fonction recherchev la facture est mise à jour automatiquement.

Je pars donc de la formule de thomlau, avec quelques petites questions:
- est-il possible de changer l'ordre des onglets à la création? Je souhaiterai qu'ils apparaissent après l'onglet Liste et GABARIT, en étant ensuite classés (du client 01 au 04). Mais bon, ceci n'est qu'un détail pas bien important, c'est juste pour l'aspect pratique.
- étant vraiment novice en VBA, je n'arrive pas à visualiser le code de la procédure afin de pouvoir l'analyser (et me former petit à petit) et surtout afin de la copier dans ma maquette réelle, cette version étant simplifiée. Est-ce possible? Comment faire?
- comment déplacer le bouton GENERER et éventuellement le modifier (agrandir, couleur...)?
- puis-je avoir autant de clients que je le souhaite ou bien la procédure est faite pour 4 clients comme actuellement?

Encore merci à vous,

sc66
 

thomlau

XLDnaute Occasionnel
Re : Création d'onglets préremplis

Re sc66

Pour ce qui est de l'ordre des onglets, je sais que c'est possible, mais je ne me rappelle plus de la procédure.
Pour lire et comprendre le code, il faut appuyer simultanément sur les touches ALT et F11 pour enfin ouvrir le module1.

Pour modifier la position du bouton, il faut passer en mode Création.

En ce qui concerne le nombre de clients, regarde cette portion de code :
Code:
For i = 2 To 1000...

Celà signifie que tu peux avoir jusqu'à 998 clients (1000 - 2)

A ton service.
 

thomlau

XLDnaute Occasionnel
Re : Création d'onglets préremplis

C'est encore moi

Voici le code commenté (du mieux que j'ai pu).

Code:
Sub creer_feuille()
Dim i As Integer
Dim nom As String
Dim numero As String

pour l 'entier i qui à la valeur 2 à la première boucle, et 1000 à la dernière
For i = 2 To 1000

    'Si la cellule B1 (ou B15, B600, etc...) de la feuille Liste est non-vide alors
    If Sheets("Liste").Range("B" & i).Value <> "" Then

        'On fixe les variables nom et numero
        nom = Sheets("Liste").Range("B" & i).Value 'par exemple si i = 5, nom = B5
        numero = Sheets("Liste").Range("A" & i).Value 'idem mais en colonne A, soit ici A5
        
        
        'on ajoute une feuille que l'on nomme de la valeur de la cellule B5
        With Sheets.Add
            .Name = nom
        End With
        
        'On va copier l'intégralité de la feuille GABARIT
        Sheets("GABARIT").Select
        Cells.Select
        Selection.Copy
        Sheets(nom).Select
        'Pour ensuite coller ce contenue sur la nouvelle feuille créée
        Cells.Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
        
        'les cellules A6 et B6 prennent les valeurs des variables nom et numero (B5 et A5 de la feuille Liste)
        Range("A6").Value = numero
        Range("B6").Value = nom
        
    'fin de la condition
    End If
    
'On incrémente la valeur de i de 1 pas
Next i

'Sélection de la feuille Liste
Sheets("Liste").Select

End Sub

@+
 

sc66

XLDnaute Nouveau
Re : Création d'onglets préremplis

Ca marche!

J'ai pu adapter la formule à ma maquette!

2 problèmes cependant quand je crée automatiquement les factures:
- la mise en page (marges de la feuille) n'est pas conservée, or il me serait bien plus pratique de la garder identique.
- si je rajoute des images (logo de l'entreprise) et/ou des zones de textes, elles ne sont pas conservées lors de la copie de la facture dans les nouveaux onglets.

Pensez-vous qu'il y ait une solution pour "tout" garder?

Merci :)
 

Discussions similaires

Réponses
2
Affichages
691

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 429
Messages
2 088 350
Membres
103 823
dernier inscrit
ben talha redouane