Copie de ligne de différents onglet sur une feuille "synthése" [Résolu/Fermé]

Signaler
Messages postés
10
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
8 septembre 2014
-
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
-
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

Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
est-ce que tu veux garder un lien entre tes cellules ou simplement copier les valeurs ?
Messages postés
10
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
8 septembre 2014

Je voudrais garder un lien au cas où il y ai des mise à jour d'information de mes lignes
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
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 ?
Messages postés
10
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
8 septembre 2014

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?
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
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)
Messages postés
10
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
8 septembre 2014

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....
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
Messages postés
10
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
8 septembre 2014

Merci,
Je crois que mon fichier est joint,
j'ai explicité mon besoin à travers ;!)
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
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
Messages postés
10
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
8 septembre 2014

https://www.cjoint.com/?0HDqLDOUCxv

Est ce que ça fonctionne?
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
Ca fonctionne, je vois ton fichier, je vois les feuilles action, la feuille Risk

C'est quoi le tableau 3,
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
oh, je viens de voir tes notes dans Action (2), je regardes et je te reviens
Messages postés
10
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
8 septembre 2014

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 ;)
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
Après le dinner. je te reviens.
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
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
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
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.
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
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)
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
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.
Messages postés
10
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
8 septembre 2014

DAns votre macro, je ne comprends pas le "3" de la boucle, à quoi cela correspond? svp
LoopDependancies = 3
LoopOutputs = 3
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
c'est pour que si ton tableau est vide le remplissage commence à la ligne 3 ( pour ne pas remplacer tes titres quoi )
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
pour changer la feuille de destination tu remplace
 sheets("depedencie")
par
sheets("risk") 
et tous devrait rouler
Messages postés
10
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
8 septembre 2014

bonjour,
Encore moi, et Encore merci pour cette macro.
Cependant j'ai un petit soucis, j'ai fait plusieurs test mais ça beg.

Je m'explique:
Si dans mes tableaux actions la colonne B n'est pas renseigner mais que la C est compété, comment je fais pour que ma ligne soit prise en compte?
Parce que là, quand la colone B n'est pas renseigné, il me transfert pas ma ligne.
Help svp
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
La question, quelle est la colonne est est obligatoirement rempli.
Si la colonne C est rempli mais pas la B, est-ce que C est toujours rempli ?
Sinon est-ce D qui est toujours rempli.

Une fois la colonne obligatoire identifié, modifie le code :
While Sheets(LoopSheet).Range("B" & LoopAction).Value <> ""
Cette ligne de code est a plusieurs endroit
Elle cherche la colonne B tant que elle n'est pas vide.
Remplace la colonne B par ce qui va fonctionner pour toi.


L'idéal, c'est d'essayer de comprendre ce que fait le code qu'on t'a donné pour ensuite le modifier si tes besoins changes.
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
Merci Borntobealive d'avoir fait le suivi :)