XL 2013 Enregistrer de données sur plusieurs feuilles d'un classeur

stammy

XLDnaute Nouveau
Bonjour, je reviens vers vous pour pouvoir m'aider sur ce travail sur lequel je suis bloqué depuis une semaine!
Je suis en train de créer une application de gestion d'un centre social
depuis le userform on introduit les informations sur les personnes et les ateliers dans lesquels ils participent, le hic c'est je voudrais que l'enregistrement des informations soit fait sur plusieurs feuilles sur la feuille FAMILLES et sur les feuilles des ateliers concernés en cochant les cases en bas du formulaire; exemple: Mme X participe à l'atelier A, C, F et G

:(:( Donc Mme X va figurer sur la feuille Familles, Feuille At_A, At_C, At_F et At_G.

Et voilà la fiche excel en pièces jointes pour mieux comprendre le problème

J'éspère que j'ai bien expliqué mon problème et merci pour votre aide d'avance
 

Pièces jointes

  • FAMILLES (Enregistré automatiquement) (Enregistré automatiquement).xlsm
    68.1 KB · Affichages: 87

Lone-wolf

XLDnaute Barbatruc
Bonjour JM, stammy :)

@ stammy: as-tu testé le classeur du post #7 ? Moi je n'ai eu aucun problème.

@JM : dans mon projet, j'ai modifier les lignes comme tu l'as dit et bizarrement les données trainent à l'enregistrement, en plus le titre du formulaire m'affiche un joli "UsfCommandes ne réponds pas" et obligé de fermé excel avec le gestionnaire.

J'ai aussi tester dans un classeur (quasiment vierge ;)) pour 10 feuilles en écrivant comme ceci

lig = sheets(i).UsedRange.Rows.count + 1

Mais est-ce aussi correct d'écrire ainsi?
 

stammy

XLDnaute Nouveau
Qu'est-ce que tu veux, je suis comme ça. :oops:

De Silkyroads:

VB:
Private Sub UserForm_Initialize()
    Dim j As Integer

    'Récupère les données de la colonne A...
    For j = 1 To Range("A65536").End(xlUp).Row
        ComboBox1 = Range("A" & j)
        '...et filtre les doublons
        If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Range("A" & j)
    Next j
End Sub


Private Sub CommandButton1_Click()
    Dim i As Integer
    'Les index des Listbox commencent par zéro
    For i = 0 To ListBox1.ListCount - 1
        Debug.Print ListBox1.List(i)
    Next i
End Sub


Private Sub Listbox1_dblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim Cible As Integer

    On Error Resume Next

    With ListBox1
        If .ListIndex < 0 Then Exit Sub
        Cible = .ListIndex
        If Cible = 0 Then Exit Sub
   
        .AddItem .Text, Cible - 1
        .RemoveItem Cible + 1
        .Selected(Cible - 1) = True
    End With
End Sub

Wath Else?! :cool:

Et entre-nous tu as regardé le classeur exemple?! ;)

Oui j'ai vu le classeur mais il y a une errure
Bonjour JM, stammy :)

@ stammy: as-tu testé le classeur du post #7 ? Moi je n'ai eu aucun problème.

@JM : dans mon projet, j'ai modifier les lignes comme tu l'as dit et bizarrement les données trainent à l'enregistrement, en plus le titre du formulaire m'affiche un joli "UsfCommandes ne réponds pas" et obligé de fermé excel avec le gestionnaire.

J'ai aussi tester dans un classeur (quasiment vierge ;)) pour 10 feuilles en écrivant comme ceci

lig = sheets(i).UsedRange.Rows.count + 1

Mais est-ce aussi correct d'écrire ainsi?


Mince j'ai cru que j'ai envoyé la réponse ce matin!!
oui je l'ai testé et ça parait ce que je cherche :) sauf que pour la colonne des dates se rajoute automatiquement comme sur la photo ci-joint
 

Pièces jointes

  • capt.jpg
    capt.jpg
    32.8 KB · Affichages: 67

Lone-wolf

XLDnaute Barbatruc
Re

C'est bizarre, je viens d'inserer une ligne dans mon classeur exemple, tout est ok.

EDIT: je sais pourquoi ça inscrit la date en première ligne. Il faut que tu convertisse les tableaux en plages normales.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir à tous

LoupSolitaire
Re JM,
Et comme ceci c'est correct?
VB:
With WsVProd
derlig = .Range("b" & Rows.Count).End(xlUp).Row
For j = 2 To derlig
.Range("d" & j) = Application.SumIf(WsDC.Range("d2:d65536"), .Range("b" & j), WsDC.Range("e2:e65536"))
Next j
End With
Ou
.Cells(lig, "A")   'par exemple
Pour ma part, j'éviterai la boucle et écrirai la chose ainsi
VB:
Sub b()
Dim derlig As Long
derlig = Feuil1.Range("b" & Rows.Count).End(xlUp).Row
    With Feuil1.Range("D2:D" & derlig)
        .FormulaR1C1 = "=SUMIF(Feuil2!RC:R[8]C,Feuil1!RC[-2],Feuil2!RC[1]:R[8]C[1])"
        .Value = .Value
    End With
End Sub
 
Dernière édition:

stammy

XLDnaute Nouveau
Re

C'est bizarre, je viens d'inserer une ligne dans mon classeur exemple, tout est ok.

EDIT: je sais pourquoi ça inscrit la date en première ligne. Il faut que tu convertisse les tableaux en plages normales.

En fait c'est ce que je veux: une colonne se rajoute avec la date en première ligne et la situation absent/présent sur les lignes en dessous comme sur la photo.
Et j'ai changé le code sur mon TAF sauf qu'il enregistre les lignes sur tous les ateliers en meme temps :( par exemple Mme LULU qui participe à l'atelier linge est absente aujourd'hui elle va apparaître absente sur tous les autres ateliers avec la date d'aujourd'hui.

Et, peut être pour faire plus claire, l'atelier linge se fait tout les lundis, donc sur le tableau de l'atelier linge on doit trouver le nom, prenom et les dates (tous les lundis depuis septembre jusqu'au juin) en colonnes (titre) et en dessous sur les lignes les nom, prénoms et situation (absent/présent) en lignes
Puis le nom et prénom s'ajoutent automatiquement depuis le tableau de liste des adhérents
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour stammy

faudrait savoir au juste ce que tu veux. D'abord tu dis ceci
Donc Mme X va figurer sur la feuille Familles, Feuille At_A, At_C, At_F et At_G

Ce qui veut dire sur toutes les feuilles. Maintenant, pour faire comme tu dis, il faut mettre des conditions. Un exemple à adapter.


If Sheets(i).name = Combobox1.Value and Opt1 = True Then
Sheets(i).Range("d" & derlig) = Opt1.Caption Then (Present)
else
Sheets(i).Range("d" & derlig) = Opt2.Caption (Absent)
End if
 
Dernière édition:

stammy

XLDnaute Nouveau
Bonjour stammy

faudrait savoir au juste ce que tu veux. D'abord tu dis ceci


Ce qui veut dire sur toutes les feuilles. Maintenant, pour faire comme tu dis, il faut mettre des conditions. Un exemple à adapter.


If Sheets(i).name = Combobox1.Value and Opt1 = True Then
Sheets(i).Range("d" & derlig) = Opt1.Caption Then (Present)
else
Sheets(i).Range("d" & derlig) = Opt2.Caption (Absent)
End if

Bonjour Lone-wolf,
Oui c'est ce que j'ai dit :) mais si t'as remarqué j'ai pas mis tous les ateliers; donc j'ai zappé le At_B le At_D; donc Mme X ne doit pas figurer sur tous les ateliers.
Et pour le code ci-dessus je l'ai essayé mais il y'à toujours "erreur de compilation" au niveau de ".Range("d" & derlig) = opt1.Caption(present)"
 

Lone-wolf

XLDnaute Barbatruc
Bonjour stammy,

Et le fichier modifié alors. Sans ça, impossible de t'aider. De plus, on ne sais pas quel jour les autres ateliers se font. Alors fait un fichier en montrant le résultat de ce que tu veux au juste.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 082
Messages
2 085 169
Membres
102 804
dernier inscrit
edaguo