Créer des feuilles a partir d'un bouton

cj welch

XLDnaute Occasionnel
salut le forum,

je voudrais a partir d'un bouton créer autant de feuille qu'il y a de lignes saisie dans mon tableau.

de plus, je voudrais que les nouvelles feuilles créees récupèrent les données renseignées dans ce tableau.

je ne sais pas si c'est possible

merci de votre aide
 

skoobi

XLDnaute Barbatruc
Re : Créer des feuilles a partir d'un bouton

Re,

Une formule ne marchera pas car la suppression de la ligne engendrera l'erreur que tu mentionnes.

Je suis passé par macro.
J'ai ajouté dans les codes des boutons "ajouter" et "supprimer" du userform1 ceci:

Code:
'MAJ des infos dans feuille "controle"
MAJControle
Puis j'ai créé la procédure suivante:
Code:
Sub MAJControle()
Dim ShComm As Worksheet

Set ShComm = Sheets("Commande")
With Sheets("controle")
  .Range("A15:L43").ClearContents
  For Lig = 9 To ShComm.[A8].End(xlDown).Row
'ici la copie: cellule controle = cellule commande
    .Range("A" & Lig + 6).Value = ShComm.Range("A" & Lig).Value 'copie le nom
    .Range("B" & Lig + 6).Value = ShComm.Range("B" & Lig).Value 'copie le prénom
   [COLOR=Blue][B] 'à compléter par les cellules désirées[/B][/COLOR]
  Next
End With

End Sub
Pour l'instant s'y ajoute que le nom et prénom car je vois pas d'où tu cherche le reste:confused: (en bleu à compléter).
 

Pièces jointes

  • fact v2.zip
    67.9 KB · Affichages: 89
Dernière édition:

cj welch

XLDnaute Occasionnel
Re : Créer des feuilles a partir d'un bouton

salut skoobi,

ça marche super, mais n'y a t'il pas un autre moyen pour que les info se copie sans utiliser l'userform ; il y a des jours ou l'userform ne sert pas.
Tu peut peut etre passé par le bouton "controle" dans la feuille commande.

A+
 

skoobi

XLDnaute Barbatruc
Re : Créer des feuilles a partir d'un bouton

Dans ce cas déplace le code "MAJControle" dans le code de la feuille "Commande" puis appelle MAJControle avec le bouton "controle" ici:

Code:
Private Sub Command_pj_Click()
If Not Sheets("controle").Visible = True Then
   Sheets("controle").Visible = True
[COLOR=Blue][B]   MAJControle[/B][/COLOR]
   Exit Sub
Else
   MsgBox ("Vous devez d'abord relancer le calcul des factures ")
End If

End Sub
Biensûr, supprime l'appelle dans les boutons de l'userform.
 

cj welch

XLDnaute Occasionnel
Re : Créer des feuilles a partir d'un bouton

re,

grace a toi j'apprend beaucoup au niveau des vba. mais pas encore suffisament pour trouver encore tous seul la correction des erreurs.
le code marche super bien, seulement j'ai inscris des formules de calcul dans la feuille "controle".
A chaque fois que je lance le code, les formules se supprimes. j'ai trouver l'erreur (tu me dira, elle est façile), j'ai donc supprimer le code .Range("A15:L43").ClearContents.
Maintenant sa fonctionne, crois tu qu'il peut y avoir un risque d'erreur ? Peut on limiter l'effacement au colonne A à G ainsi qu' a la colonne J de la ligne 15 à 43 ?

De plus, pour la cerise sur le gateau, pense tu qu'on puisse masquer les lignes de la feuilles controle si elles sont vides.

A+
 

skoobi

XLDnaute Barbatruc
Re : Créer des feuilles a partir d'un bouton

Re,
j'ai inscris des formules de calcul dans la feuille "controle".
On peut avec VBA mettre des formules dans les cellules grace à la propriété "Formula" ou "FormulaLocal" de "Range".
Par exemple, démarre l'enregistreur de macro puis crés une formule dans une cellule.
Stop l'enregistrement et va voir le code dans l'éditeur de macro (dans le module1?).
J'ai mis cette ligne car en cas de suppression d'une personne (la dernière de la liste), celle-ci restera dans la feuille controle...
Pour limiter l'effacement à la colonne G, bin tout simplement: .Range("A15:G43").ClearContents ;)
ainsi qu' a la colonne J de la ligne 15 à 43 ?
Je pense que tu vas trouver le code.
De plus, pour la cerise sur le gateau, pense tu qu'on puisse masquer les lignes de la feuilles controle si elles sont vides.
Tu crés un filtre automatique puis tu filtres sur (non vide) en enregistrant la manip. dans l'enregistreur de macro.
Voili voilou.
Bonne journée.
 

cj welch

XLDnaute Occasionnel
Re : Créer des feuilles a partir d'un bouton

salur skoobi,

j'ai modifié le code de la façon suivant :
Sub MAJControle()
Dim ShComm As Worksheet

Set ShComm = Sheets("Commande")
With Sheets("controle")
.Range("A15:g43").ClearContents
.Range("H15:H43").ClearContents

Dim Lig As Long
For Lig = 9 To ShComm.[A8].End(xlDown).Row
'ici la copie: cellule controle = cellule commande
.Range("A" & Lig + 6).Value = ShComm.Range("A" & Lig).Value 'copie le nom
.Range("B" & Lig + 6).Value = ShComm.Range("B" & Lig).Value 'copie le prénom
.Range("H" & Lig + 6).Value = ShComm.Range("Q" & Lig).Value
.Range("k9").Value = ShComm.Range("b5").Value
.Activcell.formulaR1C1 = rc[-1]*r9c11"

'à compléter par les cellules désirées
Next
End With

End Sub

Pour effacer les cellules ou des lignes ok. cepandant, j'ai tenter d'utiliser le code de formule, seulement j'ai une erreur de syntaxe. (je voulais multiplier les cellules de la ligne h15àh23 avec la cellule $k$9) pourquoi ?

concernant le filtre, je n'arrive pas à le créer, peut tu m'aider.

A+
 

cj welch

XLDnaute Occasionnel
Re : Créer des feuilles a partir d'un bouton

Salut skoobi,

je veux que les cellules de la collonne :
(H15 à H43) x la cellule $K$9 donne le résultat en colonne I15 à I43
(K15 à K43) x la cellule $L$9 donne le résultat en colonne L15 à L43
faire la somme de la colonne I15 à I43
faire la somme de la colonne L15 à L43

A+
 

skoobi

XLDnaute Barbatruc
Re : Créer des feuilles a partir d'un bouton

salut,

alors pour les 2 premières:

Code:
Sub MAJControle()
Dim ShComm As Worksheet
Dim Lig As Long

Set ShComm = Sheets("Commande")
With Sheets("controle")
  .Range("A15:L43").ClearContents
  For Lig = 9 To ShComm.[A8].End(xlDown).Row
'ici la copie: cellule controle = cellule commande
    .Range("A" & Lig + 6).Value = ShComm.Range("A" & Lig).Value 'copie le nom
    .Range("B" & Lig + 6).Value = ShComm.Range("B" & Lig).Value 'copie le prénom
[COLOR=Blue][B]    .Range("I" & Lig + 6).Formula = "=H" & Lig + 6 & "*$K$9"
    .Range("L" & Lig + 6).Formula = "=K" & Lig + 6 & "*$L$9"[/B][/COLOR]
    
    'à compléter par les cellules désirées
  Next
End With

End Sub

Les 2 dernières tu peux les mettre directement dans les cellules car elles ne seront jamais effacées.
Pour le filtre auto:
1- sélectionne la plage A12:G43
2- Données>Filtrer>Fitre automatique
pour cacher les lignes vides tu choisi (non vide) dans une des colonnes.

Bon, je vais me coucher, bonne fin de soirée.
 

cj welch

XLDnaute Occasionnel
Re : Créer des feuilles a partir d'un bouton

re,

pour les codes de calcul c'est super.
En revanche, le filtre marche mais seulement quand je rajoute un nouvelle enregistrement avec l'userform, et que je recalcule, la copie ne se fait pas dans la feuille controle.

A+
 

cj welch

XLDnaute Occasionnel
Re : Créer des feuilles a partir d'un bouton

salut skoobi,

je ne comprend pas bien ton dernier post.
En effet, le code auquel tu me renvoi est déja existant dans la feuille.
Est tu en train de me dire qu'il faut que je rajoute à ce code, le code du filtre qui j'aurais elaboré avec l'enregistreur de macro ?

Cordialement

A+
 

skoobi

XLDnaute Barbatruc
Re : Créer des feuilles a partir d'un bouton

Re,

Non, en fait je pensais que tu voulais faire le filtre "à la main", pas l'ajouter dans le bouton "controle".
Si tu l'as mis dans le code, il faut d'abord "afficher tout" puis appliquer le filtre pour que le dernier enregistrement soit pris en compte.
la copie ne se fait pas dans la feuille controle
Cela n'a rien à voir avec la mise en place du filtre.
 
Dernière édition:

Discussions similaires

Réponses
16
Affichages
465

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa