Récupérer valeurs fixes dans feuilles créées

Résolu/Fermé
léonff Messages postés 23 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007 - 11 déc. 2007 à 13:55
eriiic Messages postés 24449 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 septembre 2022 - 12 déc. 2007 à 15:12
Bonjour,
j'ai un petit tableau excel qui marche tres bien grace à une personne de ce forum qui consiste à créer automatiquement
des feuilles.
J'aimerais grace à une petite macro que pour chaque feuille créée (elles ont toutes le même format de ligne et de colonne), il me recopie
automatiquement la valeur de la case H30 de la feuilles créée vers mon tableau récapitulatif dans la colonne F, les valeurs les unes en dessous des autres.
Je vous fait un exemple:
tableau récapitulatif comportant les cases suivantes:
n° de prix, intitulé,quantité, unité
dès que je rentre un n° de prix excel me créée une feuille grace à un modèle. Ca ca marche super bien
maintenant ce que je voudrais c'est que dans la feuille créée, je puisse automatiquement récuperer cette case H30 de la feuille créée et
la recopié dans mon tableau récapitulatif dans la colonne F et dans la ligne de mon numéro de prix. Faire une sorte de boucle.
MERCI de vos réponses

10 réponses

eriiic Messages postés 24449 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 septembre 2022 7 129
11 déc. 2007 à 23:27
Bonsoir,

Il est plus simple d'ajouter cette valeur au moment de la création de ta feuille en modifiant un peu la macro (dans la mesure où j'ai bien compris et que c'est à ce moment qu'elle est remplie).
Si tu as besoin d'aide il faudrait communiquer cette macro ou ton fichier ainsi que le nom de ta feuille récapitulative.
eric
0
léonff Messages postés 23 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
12 déc. 2007 à 08:52
salut ériiic,
voici la macro que j'ai enregistré dans ma feuille récapitulatif:

Private Sub Worksheet_Change(ByVal zone As Range)
Dim sh As Worksheet
Dim sel As Object
For Each sel In zone
Select Case sel.Column
Case 1
If sel.Text = "" Then Exit Sub
For Each sh In Sheets
If sh.Name = sel.Text Then Exit Sub
Next sh
Application.EnableEvents = False
Sheets("modèle").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = sel.Text
ActiveSheet.Cells(4, 2).Value = sel.Value
sel.Parent.Select
Application.EnableEvents = True
Case 2
Sheets(Cells(sel.Row, 1).Text).Cells(4, 10).Value = sel.Value
Case 3
Sheets(Cells(sel.Row, 1).Text).Cells(5, 2).Value = sel.Value
Case 4
Sheets(Cells(sel.Row, 1).Text).Cells(5, 10).Value = sel.Value
Case Else
End Select
Next sel
End Sub
Sub zx()
Application.EnableEvents = True

End Sub

voici la macro que j'ai écrite et qui marche bien. J'espère que tu as bien compris mon problème
merci pour tout
0
léonff Messages postés 23 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
12 déc. 2007 à 08:55
ma feuille récapitulative s'appelle "devis" et mes feuilles crées dépendent du n°de prix
1.2.1 ou 1.2.2 ou 1.2.3 .............
0
eriiic Messages postés 24449 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 septembre 2022 7 129
12 déc. 2007 à 09:24
Bonjour,

il faudrait mettre sur www.cijoint.fr ton fichier avec qcq feuiilles car là je ne vois pas que H30 soit rempli au moment de sa création, s'il y a d'autres feuilles que "devis" et celles crées, en quelle colonne de devis se trouve ta référence de prix ni si ils sont ordonnés..
eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
léonff Messages postés 23 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
12 déc. 2007 à 11:36
Voici le lien
http://www.cijoint.fr/cij102756749434522.xls

j'espère que tu vas mieux comprendre
0
eriiic Messages postés 24449 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 septembre 2022 7 129
12 déc. 2007 à 12:09
En fait ces valeurs ne sont pas mises à jour à la création de la feuille mais évoluent selon tes saisies.
Je t'ai donc fait une macro de mise à jour de ta feuille devis avec un bouton 'MàJ' et un raccourci clavier ALT+m.
La valeur n'est copiée que si c'est une valeur numérique (pour filtrer les erreurs, et les textes sont exclus aussi)
J'ai nommé ta zone devis!A11:A46 NumPrix et je ne balaie que ces cellules. Si ta feuille évolue pense à redéfinir cette zone nommée si besoin.
le code :
Sub Maj()
    For Each cel In Range("NumPrix")
        For i = 1 To Worksheets.Count
            If Worksheets(i).Name = cel.Value Then
                If IsNumeric(Worksheets(i).[G30].Value) Then
                    cel.Offset(0, 4) = Worksheets(i).[G30].Value
                End If
                If IsNumeric(Worksheets(i).[H30].Value) Then
                    cel.Offset(0, 5) = Worksheets(i).[H30].Value
                End If
            End If
        Next i
    Next cel
End Sub
http://www.cijoint.fr/cij29571004834550.xls


eric
0
léonff Messages postés 23 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
12 déc. 2007 à 13:05
merci beaucoup pour ce travail c'est super,
juste une remarque si jamais dans ma feuille créée je dois insérer une ou plusieurs lignes alors
la valeur à recopier est H31 ou H32 ou H33 .... au lieu de H30 comment faire?
et pareil pour la valeur en G30?
merci de ton aide
0
eriiic Messages postés 24449 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 septembre 2022 7 129
12 déc. 2007 à 14:27
A ce moment là met:
Sub Maj()
    Dim i As Long, lig As Long
    Application.ScreenUpdating = False
    For Each cel In Range("NumPrix")
        For i = 1 To Worksheets.Count
            If Worksheets(i).Name = cel.Value Then
                Worksheets(i).Activate
                lig = Evaluate("MATCH(""TOTAL GENERAL"",A:A,0)")
                If IsNumeric(Cells(lig, 7).Value) Then
                    cel.Offset(0, 4) = Cells(lig, 7).Value
                End If
                If IsNumeric(Cells(lig, 8).Value) Then
                    cel.Offset(0, 5) = Cells(lig, 8).Value
                End If
            End If
        Next i
    Next cel
    Worksheets("devis").Activate
    Application.ScreenUpdating = True
End Sub

Et conserve toujours TOTAL GENERAL en colonne A sur la ligne concernée
http://www.cijoint.fr/cij50130378334535.xls

eric
0
léonff Messages postés 23 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
12 déc. 2007 à 14:54
merci beaucoup éric pour ce travail
c'est impécable
je te souhaite une bonne fin de semaine
by
0
eriiic Messages postés 24449 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 septembre 2022 7 129
12 déc. 2007 à 15:12
De rien, bonne fin de semaine à toi aussi...
0