Macro - copier des données dans première colonne vide

Résolu/Fermé
Signaler
Messages postés
11
Date d'inscription
mardi 18 août 2015
Statut
Membre
Dernière intervention
8 septembre 2015
-
Messages postés
11
Date d'inscription
mardi 18 août 2015
Statut
Membre
Dernière intervention
8 septembre 2015
-
C:\Users\LECOZANNET-00378\Desktop\Feuille date.png

Bonjour à tous et merci d'avance pour votre aide,

Description :
J'ai une feuille nommée (date). C'est une autre macro que je n'évoquerai pas ici (qui fonctionne :) )
Une autre nommée "tableau_synthese".

Sur la feuille (date) j'ai plusieurs colonnes dont :
- une colonne des entrées
- une colonne des soldes
- une colonne délais
Je voudrais coller ces trois colonnes sur la feuille "tableau_synthese" à partir de la première colonne vide avec leur entête sur la ligne 2

Puis en relançant la macro que ces colonnes (qui seront sur une feuille (date 2)) soient copiées sur les colonnes vides suivantes, etc... (cela me permet d'avoir un tableau de synthèse, base pour la création de courbes d'évolution de mes données)

Voici le début de mon code pour coller les entêtes et les données des "entrées" avec deux variantes dont aucune ne fonctionne ....
Sub Tableau_synthèse()
'
<ital>' Tableau_synthèse Macro
'

'Colonne_ET : colonne en tête
'Colonne_E : colonne entrée

Dim Colonne_ET As Integer
Dim Colonne_E As Integer

'Mise en place des en têtes

Sheets("10 aout 2015").Select
Range("E4,G4,I4").Select
Range("I4").Activate
Selection.Copy
'Trouver la première colonne vide et copier les entêtes

Sheets("Tableau_Synthese").Select

'Colonne_ET = 4


Colonne_ET = Cells(2, Cells.Columns.Count).End(xlToRight).Column + 1
'If Cells(2, Colonne_ET) = "" Then
'If Colonne_ET = "" Then
' La cellule ligne 2 colonne 1 est vide
'Cells(2, Colonne_ET).Select
Columns(Colonne_ET).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

'Else
'Cells(Columns.Count, Colonne_ET).End(xlUp).Offset(2, 0).Select
' End If



'Copier les entrées sur la Colonne vide dispo
'Copier

Sheets("10 aout 2015").Select
Range("I5:I30").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Tableau_Synthese").Select

'trouver colonne vide

Colonne_E = 1

If Cells(3, Colonne_E) = "" Then
' La cellule ligne 3 colonne 1 est vide
Cells(3, Colonne_E).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Else
Cells(Rows.Count, Colonne_E).End(xlUp).Offset(2, 0).Select
End If</ital>

Merci à tous !


 


1 réponse

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 566
Bonjour,

Tu ne peux pas faire de copie avec des plages multiples
Range("E4,G4,I4").Copy
ne fonctionne pas.

Si j'ai bien compris ce que tu veux faire, je te propose ce code :
Sub Tableau_synthèse()
'
' Tableau_synthèse Macro'

'Colonne_ET : colonne en tête
'Colonne_E : colonne entrée
Dim Colonne_ET As Integer
Dim Colonne_E As Integer
Dim w_ET As Worksheet
Dim w_E As Worksheet
Dim lig As Long

'Mise en place des en têtes

Set w_E = Sheets("10 aout 2015")
Set w_ET = Sheets("Tableau_Synthese")
 'Trouver la première colonne vide et copier les entêtes
    Colonne_E = 5
    Colonne_ET = w_ET.Cells(2, w_ET.Columns.Count).End(xlToLeft).Column + 1
    lig = Cells(Rows.Count, Colonne_E).End(xlUp).Row - 3
'Copier les entrées sur la Colonne vide dispo
    w_E.Cells(4, Colonne_E).Resize(lig, 5).Copy
    w_ET.Cells(2, Colonne_ET).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    w_ET.Cells(2, Colonne_ET).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    w_ET.Columns(Colonne_ET + 1).Delete
    w_ET.Columns(Colonne_ET + 2).Delete
End Sub
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 566
Bonjour oldwise,

les délais de la semaine précédente ne sont pas copiés.
Tu utilises quelle version d'excel ?
Il me semble pourtant qu'ils devraient y être comme dans mon exemple
    Range("J5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

La plage synthèse se trouve dans les codes ?
Non c'était une plage nommée qui est dans les Noms du gestionnaire de noms, mais je l'ai supprimée pour mettre le paramètre directement dans le graphe.
Tu peux bien sûr changer le type, les couleurs, etc et lorsque tu rajoutes une semaine le graphe s'allonge.

https://www.cjoint.com/c/EHyu41l5krK

Bonne journée
Messages postés
11
Date d'inscription
mardi 18 août 2015
Statut
Membre
Dernière intervention
8 septembre 2015
>
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020

Salut,

J'ai relancé excel. Ca fonctionne super bien.
Comment fais-tu pour ajouter ce paramètre évolutif dans le graphe (afin que je créé ce type de graphe par thème) ?
C'est vraiment top.

Merci
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 566
Bonjour oldwise,

Voilà avec les thèmes :

https://www.cjoint.com/c/EHzrd7ugZM8

Le paramètre évolutif dans le graphe est en fin de macro synthèse et il prend l'ensemble de ta feuille, à toi de voir le type de graphe souhaité et tu peux bien sûr le modifier à ta guise, la seule fonction macro est d'adapter la taille des données.
Messages postés
11
Date d'inscription
mardi 18 août 2015
Statut
Membre
Dernière intervention
8 septembre 2015
>
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020

Salut gbinforme

Ca marche au top.

Merci beaucoup pour ton aide
Messages postés
11
Date d'inscription
mardi 18 août 2015
Statut
Membre
Dernière intervention
8 septembre 2015
>
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020

Salut,

Pour bien comprendre, comment je fais si je veux faire par exemple un graphe pour les entrées pour le thème 1 puis un graphe pour les délais pour le thème 2, etc...

Merci encore