XL 2013 Transférer les données entre les feuilles du même classeur

martina-pecolina

XLDnaute Nouveau
Bonjour à tous,

dans mon exemple que vous trouverez ci-annexé il y'a 4 feuilles, et celle qui m'intéresse c'est la feuille Total.
ce que je souhaite c'est d'avoir un code qui sera lié au bouton Transférer de la feuille Total qui fera ceci:

- copier les données et la mise en forme de la feuille Heures à partir de la ligne 11 pour les colonnes : A, B, H, L, Q, T, V et les coller dans les colonnes A, B, D, M, Q, U, AB de la feuille Total

- copier les données et la mise en forme de la feuille Ciment à partir de la ligne 11 pour les colonnes : H, K, L, Q, T, V et les coller dans les colonnes E, I, N, R, V, AC de la feuille Total

- copier les données et la mise en forme de la feuille Acier à partir de la ligne 11 pour les colonnes : H, L, Q, T, V et les coller dans les colonnes F, O, S, W, AD de la feuille Total

- les colonnes G, J, K, X de la feuille Total contiennent des formules et elles ne sont pas concernées par le transfert

- les formules des lignes 5 et 6 de la feuille Total sont fixes

- pour la feuille Heures il ne faut pas transférer les données qui se trouvent après la cellule de la colonne B ou c'est écrit MOI (dans notre cas la cellule B71, sans oublier que c'est variable)

- pour les feuilles Ciment & Acier il ne faut pas transférer les données qui se trouvent après la cellule de la colonne B ou c'est écrit INDIRECTS (dans notre cas la cellule B71, sans oublier que c'est variable)

NB: 1- toutes les données de la feuille Total j'aimerais qu'elles soient en valeur et non pas en formule.
2- les lignes des feuilles heures, ciment, acier sont variable c'est à dire nous pouvons avoir plus.
 

Pièces jointes

  • Total (1).xlsx
    95 KB · Affichages: 23

job75

XLDnaute Barbatruc
Bonjour martina-pecolina,

Pas besoin de bouton avec cette macro dans le code de la feuille "Total" (clic droit sur l'onglet et Visualiser le code) :
Code:
Private Sub Worksheet_Activate()
Dim dercel As Range, h&, source As Range, dest As Range, i As Byte
Application.ScreenUpdating = False
'---transfert depuis la feuille Heures---
With Sheets("Heures")
    Set dercel = .[B:B].Find("MOI", , xlValues, xlWhole)
    h = IIf(dercel Is Nothing, 10000, dercel.Row - 11)
    Set source = .[A11,B11,H11,L11,Q11,T11,V11]
    Set dest = [A11,B11,D11,M11,Q11,U11,AB11]
    For i = 1 To source.Areas.Count
        source.Areas(i).Resize(h).Copy dest.Areas(i) 'copie tout
        dest.Areas(i).Resize(h) = source.Areas(i).Resize(h).Value 'copie les valeurs
        dest.Areas(i)(h + 1).Resize(Rows.Count - h - 10).Delete xlUp 'RAZ en dessous
    Next
End With
'---transfert depuis la feuille Ciment---
With Sheets("Ciment")
    Set dercel = .[B:B].Find("INDIRECTS", , xlValues, xlWhole)
    h = IIf(dercel Is Nothing, 10000, dercel.Row - 11)
    Set source = .[H11,K11,L11,Q11,T11,V11]
    Set dest = [E11,I11,N11,R11,V11,AC11]
    For i = 1 To source.Areas.Count
        source.Areas(i).Resize(h).Copy dest.Areas(i) 'copie tout
        dest.Areas(i).Resize(h) = source.Areas(i).Resize(h).Value 'copie les valeurs
        dest.Areas(i)(h + 1).Resize(Rows.Count - h - 10).Delete xlUp 'RAZ en dessous
    Next
End With
'---transfert depuis la feuille Acier---
With Sheets("Acier")
    Set dercel = .[B:B].Find("INDIRECTS", , xlValues, xlWhole)
    h = IIf(dercel Is Nothing, 10000, dercel.Row - 11)
    Set source = .[H11,L11,Q11,T11,V11]
    Set dest = [F11,O11,S11,W11,AD11]
    For i = 1 To source.Areas.Count
        source.Areas(i).Resize(h).Copy dest.Areas(i) 'copie tout
        dest.Areas(i).Resize(h) = source.Areas(i).Resize(h).Value 'copie les valeurs
        dest.Areas(i)(h + 1).Resize(Rows.Count - h - 10).Delete xlUp 'RAZ en dessous
    Next
End With
End Sub
Elle se déclenche quand on active la feuille.

Edit : j'ai ajouté la RAZ en dessous des plages de destination.

Fichier .xlsm joint.

A+
 

Pièces jointes

  • Total (1).xlsm
    108.7 KB · Affichages: 20
Dernière édition:

martina-pecolina

XLDnaute Nouveau
Bonjour Job75, tout le monde
c'est vraiment extraordinaire ce que vous m'avez donné comme résultat, je n'ai même pas compris comment elle se met à jour sans bouton.
je vous remercie pour ce travail formidable.
j'ai vérifié les différents points cités dans ma demande et j'ai remarqué que :

+ quand j'ai ajouté les lignes 71 jusqu'à 82 dans les feuilles Heures, Ciment, Acier la feuille total n'a pas copié les formules et mise en forme des colonnes G, J, K, X comme vous pouvez voir dans le même fichier ci-joint.

+ toutes les cellules des colonnes de la feuille total sont transformées en valeur sauf les colonnes G, J, K, X et les lignes 5 & 6 (PU, Montant), elles doivent aussi être transformées en valeur

si non pour le reste tout est superbe.
 

Pièces jointes

  • Total (1).xlsm
    109.9 KB · Affichages: 21

job75

XLDnaute Barbatruc
Re,
+ quand j'ai ajouté les lignes 71 jusqu'à 82 dans les feuilles Heures, Ciment, Acier la feuille total n'a pas copié les formules et mise en forme des colonnes G, J, K, X comme vous pouvez voir dans le même fichier ci-joint.
Vous vous contredisez, relisez ce que vous avez dit au post #1 sur les colonnes G, J, K, X !

Et quand vous agrandissez les tableaux vous seule savez ce qu'il faut mettre dans les cellules en bas de ces colonnes : faites-le manuellement.

A+
 

martina-pecolina

XLDnaute Nouveau
Re-Bonjour Job75,

+ pour les colonnes G, J, K, X j'ai dit qu'elles ne sont pas concernées par le transfert mais dans le NB j'ai bien précisé que toutes les données de la feuille Total devraient être en valeur.

+ et pour les lignes des feuilles heures, ciment, acier j'ai précisé aussi qu'elles sont variable c'est à dire nous pouvons avoir plus.

je ne sais pas si cela est difficile à faire ou vous oblige de refaire le code mais je suis désolée si je me suis mal exprimée.
j'aurai voulu que le fichier soit complet en ajoutant ces deux choses mais bon.

je vous remercie encore une autre fois pour tout ce vous avez déjà pu réalisé.

salutations
 

martina-pecolina

XLDnaute Nouveau
Re,
j'ai compris, dans ce cas j'accepte de garder les formules dans ces colonnes mais elles doivent se mettent à jour quand j'ajoute des lignes dans les autres feuilles.
pour les lignes 5 & 6 je crois que c'est possible de le transformer en valeur parce-qu’elles viennent des feuilles Heures, Ciment, Acier
 

job75

XLDnaute Barbatruc
j'ai compris, dans ce cas j'accepte de garder les formules dans ces colonnes mais elles doivent se mettent à jour quand j'ajoute des lignes dans les autres feuilles.
Il faut aussi comprendre que la mise à jour des formules est très difficile par macro, comme je l'ai dit il faut le faire manuellement.
pour les lignes 5 & 6 je crois que c'est possible de le transformer en valeur parce-qu’elles viennent des feuilles Heures, Ciment, Acier
Non car les données des feuilles Heures, Ciment et Acier peuvent être modifiées !
 

martina-pecolina

XLDnaute Nouveau
Re,
Euh donc chaque ligne ajouté dans les feuilles heures, ciment, acier je dois l’ajouter manuellement sur total et mettre les formules manuellement dans les colonnes g, j, k, x.... c’est un travail de fourmis parce que chaque fin de mois de nouvelles lignes s’ajoutent et d’autres s’effacent.

Pour les lignes 5 et 6 leur données se transfèrent des feuilles heures, ciment, acier comme pour les colonnes A et B...ect. je n’ai pas bien compris la difficulté mais ce n’est pas grave.

Merci beaucoup Job75 pour le temps que vous avez consacré pour répondre sur ma demande.

Salutations
 

martina-pecolina

XLDnaute Nouveau
Bonjour Job75, tout le forum
merci de voir si vous êtes disponible le code en pièce jointe.
cela répond sur toutes questions que j'ai posté sur ce fil de discussion, le seul souci que j'ai remarqué concernent les colonnes G, J, K, X,

si je change la valeur de E13 de la feuille Heure, la cellule D13 de la feuille total prend cette valeur par contre le calcul ne se fait pas si sur G13 ni J13.
c'est la même chose pour toutes les lignes jusqu'à la ligne 65.

en revanche pour les lignes 70 à 86 qui n'existaient pas et que j'ai rajouté après, si je change la valeur de E72 de la feuille Heure, la cellule D72 de la feuille total prend cette valeur et le calcul se fait sur G13 et J13 sans aucun problème.

pouvez vous voir d'ou vient le problème

Merci
 

Pièces jointes

  • Total v4.xlsm
    130.9 KB · Affichages: 14

job75

XLDnaute Barbatruc
Bonjour martina-pecolina, le forum,

Je ne vois pas du tout le rapport de votre dernier fichier avec ce qui se faisait précédemment :

- le code que j'ai fourni au post #2 n'y est pas

- conformément au post #1 mon code ne transférait pas la colonne E

- il n'y a plus de formules dans les colonnes G J K X.

Si vous voulez utiliser la macro Transférer qui se trouve dans votre fichier adressez-vous à celui qui l'a conçue, ce n'est pas moi.

A+
 

Discussions similaires

Réponses
7
Affichages
292
Réponses
4
Affichages
256