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

Résolu
léonff Messages postés 23 Date d'inscription   Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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
Configuration: Windows XP
Internet Explorer 6.0

10 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  2. léonff Messages postés 23 Date d'inscription   Statut Membre
     
    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
  3. léonff Messages postés 23 Date d'inscription   Statut Membre
     
    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
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. léonff Messages postés 23 Date d'inscription   Statut Membre
     
    Voici le lien
    http://www.cijoint.fr/cij102756749434522.xls

    j'espère que tu vas mieux comprendre
    0
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  8. léonff Messages postés 23 Date d'inscription   Statut Membre
     
    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
  9. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  10. léonff Messages postés 23 Date d'inscription   Statut Membre
     
    merci beaucoup éric pour ce travail
    c'est impécable
    je te souhaite une bonne fin de semaine
    by
    0
  11. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    De rien, bonne fin de semaine à toi aussi...
    0