Encore coper coller / vba

  • Initiateur de la discussion Initiateur de la discussion bloublou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bloublou

XLDnaute Occasionnel
Rebonjour le forum,

J'ai encore un peu de mal pour copier coller des valeurs en vba :

Cette fois-ci dans mon exemple j'ai 2 tableaux à réunir en un seul et copier toutes les feuilles à la suite des autres.

Je vous joints mon petit fichier 😕

Merci pour votre aide,
😛
BlouBlou
 

Pièces jointes

Re : Encore coper coller / vba

Bonsoir bloublou,

Désolé, je ne comprends pas bien ta question.

S'il faut faire les totaux des 4 feuilles sur la première, des formules suffisent (voir copie ci-jointe).

Par contre, quid des noms de feuilles ?

A +

Cordialement.
 

Pièces jointes

Re : Encore coper coller / vba

Bonsoir .. PApou a accéleré en réponse avant Y posait Bcp de questions ( comme moi)
D'accord sur les points soulevés
sinon et encore :
Egalement supprimer les libellés mois en colonne A
C'est nouveau ?? ou sont les mois en colonne A ???
Après on dira ... qu'on comprend pas !!
St Thomas ne croit que ce qu'il voit ( Proverbe de Gendarmerie 2 fois à mes dépends ... et Pan !!)
 
Re : Encore coper coller / vba

Bonjour à tous,

Merci d'avoir pris le temps de lire mon post.

En fait il faudrait dans un premier temps réunir en un seul tableau les tableaux de chaque feuille :

- Les produits de S à AC les mettre à la suite de R
=> Prendre les données de C19:M28 et les copier coller en U6 et insérer en bout de tableau le nom des feuilles à partir de AF9

- Prendre chaque tableau ainsi créé de chaque feuille et les copier coller les uns à la suite des autres sur la feuille TOTAL à partir de A1

Et je me posais la question comme les données qui m'interressent sont en vert, je me disais peut être en vba c'est possible d'agir que sur ces cellules ?

Redites moi si je ne suis pas clair ?

Merci

BlouBlou
 
Re : Encore coper coller / vba

Bonjour Bloublou, Hervé, le Forum,

Voici donc une solution, si j'ai bien compris la demande.

J'ai créé 2 macros, l'une pour regrouper les tableaux de régions, l'autre pour totaliser les tableaux sur la feuille Total. Ces macros sont dans le Module 1.

A +

Cordialement.
 

Pièces jointes

Re : Encore coper coller / vba

Bonjour Papou-net, Hervé, le Forum

Ca marche nickel 🙂 🙂

Par contre je n'avais pas pensé à un inconvénient :
Est-ce que dans ton code tu peux regrouper les tableaux directement sur la feuille TOTAL ?

Parce que sur ma base initiale j'ai encore des données plus loin, et ca va écraser mes données 🙁 🙁 🙁
Est-ce que ca changerait bcp ton code ?

Et aussi pour avoir seulement 2 chiffres apres la virgule c'est la ligne de code Ubound ?

Merci bcp de ton aide,

BlouBlou
 
Re : Encore coper coller / vba

RE :

Est-ce que dans ton code tu peux regrouper les tableaux directement sur la feuille TOTAL ?
C'est ce que j'avais fait initialement avec ma solution par formules. Mais, dans ce cas, je ne comprends pas pourquoi mentionner le nom des feuilles en colonne AE ?

Parce que sur ma base initiale j'ai encore des données plus loin, et ca va écraser mes données
Est-ce que ca changerait bcp ton code ?
Si j'ai bien compris ton souci, il suffit d'insérer des lignes lors de la copie des tableaux.

Et aussi pour avoir seulement 2 chiffres apres la virgule c'est la ligne de code Ubound ?
Pour afficher 2 chiffres après la virgule, tu peux formater les cellules directement sur la feuille.

Voici donc comment réécrire la macro TableauTotal :

Code:
Sub TableauTotal()
' Cette procédure ajoute les tableaux de régions sur la feuille Total
For Each Sh In Sheets
  If Not Sh.Name = "Total" Then
    With Sh
      Lgn = Sheets("Total").Range("A1").CurrentRegion.Rows.Count + 1
      For Each Cel In .Range("B9:B15").SpecialCells(xlCellTypeConstants)
        Sheets("Total").Range("A" & Lgn).EntireRow.Insert
        Sheets("Total").Range("B" & Lgn & ":AD" & Lgn).NumberFormat = "0.00"
        Sheets("Total").Range("B" & Lgn & ":AE" & Lgn).Font.Bold = False
        Sheets("Total").Range("A" & Lgn) = Replace(.Range("B" & Cel.Row), " mois", "")
        Sheets("Total").Range("B" & Lgn & ":AD" & Lgn).Value = .Range("C" & Cel.Row & ":AE" & Cel.Row).Value
        Sheets("Total").Range("AE" & Lgn) = Sh.Name
        Lgn = Lgn + 1
      Next
    End With
  End If
Next
End Sub
Si ma réponses est imprécise, ou incomplète, il serait bon que tu joignes un exemple du résultat que tu attends.

A +

Cordialement.
 
Re : Encore coper coller / vba

Salut Papou-net,

Désolé pour la réponse tardive ;o)

Merci pour ta réponse, effectivement je vais mettre un fichier de résultat.

En fait c'est presque ca.

En fait si je lance juste ta derniere macro cela me copie colle que les produits jusqu'à R et non jusqu'à AC 🙁

Je voudrais qu'en partant des feuilles en rouge cela me copie colle tous les produits jusqu'à AC (y compris les 2 tableaux + nom de la feuille)


Pour les 2 chiffres avec la virgule je vousdrais en fait un véritable arrondis même dans la cellule.

J'ai mis un petit fichie en resultat

Merci beaucoup de ton aide,

BlouBlou
 

Pièces jointes

Re : Encore coper coller / vba

Bonsoir Bloublou,

Pour lancer la mise à jour des feuilles de région et de la feuille Total, avec arrondi à 2 chiffres sur cette dernière, voici comment modifier la macro :

Code:
Sub TableauTotal2()
Call TableauxEnLigne
' Cette procédure ajoute les tableaux de régions sur la feuille Total
For Each Sh In Sheets
  If Not Sh.Name = "Total" Then
    With Sh
      Lgn = Sheets("Total").Range("A1").CurrentRegion.Rows.Count + 1
      For Each Cel In .Range("B9:B15").SpecialCells(xlCellTypeConstants)
        Sheets("Total").Range("A" & Lgn).EntireRow.Insert
Sheets("Total").Range("B" & Lgn & ":AE" & Lgn).Font.Bold = False
        Sheets("Total").Range("A" & Lgn) = Replace(.Range("B" & Cel.Row), " mois", "")
        Sheets("Total").Range("B" & Lgn & ":AD" & Lgn).Value = .Range("C" & Cel.Row & ":AE" & Cel.Row).Value
        For Each c In Sheets("Total").Range("B" & Lgn & ":AD" & Lgn)
          c.Value = Round(c.Value, 2)
        Next
        Sheets("Total").Range("AE" & Lgn) = Sh.Name
        Lgn = Lgn + 1
      Next
    End With
  End If
Next
A +

Cordialement.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
326
Réponses
5
Affichages
665
Retour