Copie de ligne de différents onglet sur une feuille "synthése"

Résolu
SandraVBA Messages postés 10 Statut Membre -  
PlacageGranby Messages postés 402 Statut Membre -
Bonjour,

Je souhaite créer une macro avec différents éléments. Je vous explique:
J'ai une feuille nommé "Actions" qui centralise des premiéres infos . Au fur et à mesure de l'avancement de mon projet, cette feuille est copier avec des données différentes (cette macro est déjà créee), les copies de "Actions" se nomme tel quel "Actions+1";Actions+2....
J'ai créer une feuille synthése qui doit reprendre dans mes feuilles Actions +X, les données d'un sous tableau qui se nomme risque. La macro doit copier toutes les lignes qui detail mon risque (les détails du tableau 3 colonnes, et quelques lignes compléter au fur et à mesure)
Je sais pas si j'ai été bien explicite mais si vous pouviez m'aider ça serait super !!!

15 réponses

  1. borntobealive Messages postés 167 Statut Membre 7
     
    est-ce que tu veux garder un lien entre tes cellules ou simplement copier les valeurs ?
    0
  2. SandraVBA Messages postés 10 Statut Membre
     
    Je voudrais garder un lien au cas où il y ai des mise à jour d'information de mes lignes
    0
  3. borntobealive Messages postés 167 Statut Membre 7
     
    alors tu défini proprement toutes tes feuille genre :

    dim Wks_blalbla as worksheet 
    dim Wks_blibli as worksheet
    
    set Wks_blabla = application.workbooks(blabla).worksheets(1)
    set Wks_blibli = application.workbooks(blibli).worksheets(1)


    et tu met dans le fichier de destination les adresses des cellules que tu veux :

    Wks_blibli.Cells(1,1).value = "=" & Wks_blabla.cells(2,8).address(true,true,xla1,true)


    tu peux utiliser range à la place de cells, donner des nom à tes range après c'est comme tu veux

    Ca répond à ta question ?
    0
    1. SandraVBA Messages postés 10 Statut Membre
       
      C'est pas exactement ça.
      de plus j'ai une erreur d'éxécution dans la macro
      Il y a pas un moyen de vous transferer mon fichier pour vous montrez ce dont j'ai besoin?
      0
    2. borntobealive Messages postés 167 Statut Membre 7
       
      mets le en ci joint sur cette page

      (si tu as pris tel quel ce que je t'ai mis et que la numerotation de tes colonnes est en chiffre alors il faut remplace xlA1 par xl R1C1)
      0
    3. SandraVBA Messages postés 10 Statut Membre
       
      je peux pas l'insérer dommage ;(
      J'ai modifié mais ça ne fonctionne pas.
      Je réexplique:
      Je veux qu'il copis (avec lien) la ligne B27 de la feuille actions, mais ma ligne B27 n'est pas figé dans le cas où d'autre ligne peuvent être insérer au dessus.
      Aprés la macro doit transferer les infos de la ligne dans mon onglet risk (c'est infos c'est du texte)
      Cepedant j'ai plusieurs feuille actions (action+1; action+2....)

      Je sais pas si j'exprimes bien mon besoin....
      0
  4. SandraVBA Messages postés 10 Statut Membre
     
    Merci,
    Je crois que mon fichier est joint,
    j'ai explicité mon besoin à travers ;!)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. PlacageGranby Messages postés 402 Statut Membre 26
     
    Une fois ton fichier joint sur Cjoint.
    Il est sur Cjoint.

    Tu dois mettre le liens ici dans le forum pour qu'on puisse y avoir accès
    0
  7. PlacageGranby Messages postés 402 Statut Membre 26
     
    Ca fonctionne, je vois ton fichier, je vois les feuilles action, la feuille Risk

    C'est quoi le tableau 3,
    0
  8. PlacageGranby Messages postés 402 Statut Membre 26
     
    oh, je viens de voir tes notes dans Action (2), je regardes et je te reviens
    0
  9. SandraVBA Messages postés 10 Statut Membre
     
    le tableau 3 c'est juste une description de l'action projet. J'ai pas besoin d'insérer des formules ou autre.

    Super merci ;)
    0
  10. PlacageGranby Messages postés 402 Statut Membre 26
     
    Après le dinner. je te reviens.
    0
  11. PlacageGranby Messages postés 402 Statut Membre 26
     
    Je résume, en gros beaucoup de compteur et de loop.
    Premierement, trouver on est rendu à quelle ligne dans les feuilles dependancies, output et autre. on loop et on assigne un compteur.

    Ensuite, on loop sur les feuille et on trouve celle qui commence par "Action"
    Pour les feuilles action, on loop pour trouver l'entête des tableau. on prend un compteur.
    Une fois un tableau trouvé, on copie tant que la colonne B n,est pas vide, après on cherche le tableau suivant.

    J'ai fait le code pour Dependancies et output. il reste a ajouter les autres tableau. Tu peux t'inspirer du code que j'ai fait. modifier au besoin. et aussi, il te faudra creer un bouton et assigner la macro.

    Sub voila()
    Dim LoopSheet As Integer
    Dim LoopAction As Integer
    Dim LoopDependancies As Integer
    Dim LoopOutputs As Integer
    Dim Arret As Boolean
    Dim test As String
    
    LoopDependancies = 3
    LoopOutputs = 3
    
    While Sheets("Dependencies").Range("A" & LoopDependancies).Value <> ""
        LoopDependancies = LoopDependancies + 1
    Wend
    
    While Sheets("Outputs").Range("A" & LoopOutputs).Value <> ""
        LoopOutputs = LoopOutputs + 1
    Wend
    
    For LoopSheet = 1 To Worksheets.Count
        If Left(Worksheets(LoopSheet).Name, 6) = "Action" Then
            Arret = False
            LoopAction = 1
            While Arret <> True
                If Sheets(LoopSheet).Range("B" & LoopAction).Value = "17. DEPENDENCIES AND INPUTS" Then
                    LoopAction = LoopAction + 2
                    While Sheets(LoopSheet).Range("B" & LoopAction).Value <> ""
                        Sheets("Dependencies").Range("A" & LoopDependancies).Value = Sheets(LoopSheet).Range("B" & LoopAction).Value
                        Sheets("Dependencies").Range("B" & LoopDependancies).Value = Sheets(LoopSheet).Range("C" & LoopAction).Value
                        Sheets("Dependencies").Range("C" & LoopDependancies).Value = Sheets(LoopSheet).Range("E" & LoopAction).Value
                        Sheets("Dependencies").Range("D" & LoopDependancies).Value = Sheets(LoopSheet).Range("F" & LoopAction).Value
                        LoopDependancies = LoopDependancies + 1
                        LoopAction = LoopAction + 1
                    Wend
                End If
                If Sheets(LoopSheet).Range("B" & LoopAction).Value = "18. OUTPUTS AND DELIVERABLES" Then
                    LoopAction = LoopAction + 2
                    While Sheets(LoopSheet).Range("B" & LoopAction).Value <> ""
                        Sheets("Outputs").Range("A" & LoopOutputs).Value = Sheets(LoopSheet).Range("B" & LoopAction).Value
                        Sheets("Outputs").Range("B" & LoopOutputs).Value = Sheets(LoopSheet).Range("C" & LoopAction).Value
                        Sheets("Outputs").Range("C" & LoopOutputs).Value = Sheets(LoopSheet).Range("E" & LoopAction).Value
                        Sheets("Outputs").Range("D" & LoopOutputs).Value = Sheets(LoopSheet).Range("F" & LoopAction).Value
                        LoopOutputs = LoopOutputs + 1
                        LoopAction = LoopAction + 1
                    Wend
                    Arret = True
                End If
                LoopAction = LoopAction + 1
            Wend
        End If
    Next
    
    
    End Sub
    0
  12. PlacageGranby Messages postés 402 Statut Membre 26
     
    C'est gros, mais c'est pratique quand on sait pas combien de ligne il faut copier, ou il seront exactement, et que l'endroit ou on veut les copier est variable.

    On compte, assigne un compteur, et loop pour trouver avec des for et des while.
    0
  13. PlacageGranby Messages postés 402 Statut Membre 26
     
    oh, j'ai mis une variable arret.
    En gros, dans le dernier tableau que tu veux copier. tu met la arret = true pour qu'il arrête de cherche la feuille action.
    Je l'ai mis a la fin de outputs car c'est le dernier tableau que j'ai fait dans mon code, mais toi il faudrait placer arret = true a payement claim (innexistante je crois, ca s'arrete a assumption, payment n'est pas la)
    0
  14. PlacageGranby Messages postés 402 Statut Membre 26
     
    Tu voulais aussi coller la référence au lieu de la valeur.
    Ma macro colle la valeur.
    Sauf que le but d'avoir la réfèrence était si y avait des changement.
    En gros, tu met un bouton pour effacer le contenu des tableau dependancies, outputs et compagnie, et tu relance la macro, et tu as toutes les informations mis à jour.
    0
    1. SandraVba
       
      C'est super. J'aurais jamais trouver tout ça, je vais l'enregistrer dans mon fichier et je vous informe de cela
      0
    2. SandraVba
       
      Merci beaucoup pour votre aide!
      0
    3. PlacageGranby Messages postés 402 Statut Membre 26
       
      Aucun problème,,, c'est assez infernal comme code.

      Mais suffit de l'avoir fait une fois pour avoir une base, et ensuite réutiliser cela plus tard dans d,autre programme.
      0
    4. SandraVBA Messages postés 10 Statut Membre
       
      Quand j'éxécute la macro, les élements de la partie risque ce transfert dans l'onglet dependencies et pas dans l'onglet risk; Comment je peux remedier à cela svp
      0
    5. SandraVBA Messages postés 10 Statut Membre
       
      DAns votre macro, je ne comprends pas le "3" de la boucle, à quoi cela correspond? svp
      LoopDependancies = 3
      LoopOutputs = 3
      0
  15. PlacageGranby Messages postés 402 Statut Membre 26
     
    Merci Borntobealive d'avoir fait le suivi :)
    0