Bonjours tout le monde. Je viens vous voir avec un problème que je rencontre dans un fichier excel. Plus précisément une macro qui ne fonctionne pas correctement.

Je suis complètement novice dans ce domaine, et peut être que la solution est facile à trouver, mais à chaque fois que j’essaie, ça ne fait pas ce que je souhaite …
Cette macro (cf ci après) sert à trier mes lignes de commande que je reçois en les répartissant par mois dans l’onglet correspondant.

Je vous explique mes problèmes :
Tout d’abord, quand la macro sélectionne les données pour les répartir, elle ne copie pas la colonne A.

Ensuite J’aimerai pouvoir décaler le collé des données (dans les onglets au mois par mois) d’une colonne vers la droite, pour laisser la colonne A vide (pour pouvoir y inscrire des chiffres manuellement – cette colonne est en bleu pour bien dire qu’elle soit resté vide).
J’ai essayer de régler ce problème en changeant le « Offset(1, 0) » en « Offset(1, 1) », mais cela ne fonctionne pas non plus (car seule la première ligne est alors copiée…).

Enfin je ne sais pas comment faire pour que la macro fasse un collage spécial (afin de garder la mise en forme de destination), car j’ai des contraintes de mises en forme imposées…


Enfin voila mes problèmes, et je ne sais vraiment pas comment procéder. Quand j’essai de changer le VBA, rien ne se passe comme je le voudrai. Ça me désespère.

Pouvez-vous m’aider ?
En tout cas je vous remercie pour l’attention que vous voulez me porterez.
A bientôt !

Aussi, je me demandai a quoi servent les codes comme par exemple « .Cells(Application.Rows.Count, 3 » ? 

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub Macro1()
 
Dim pl As Range
Dim cel As Range
Dim a As String
Dim an As Integer
Dim m As String
Dim dest As Range
 
an = Sheets("Commandes").Range("F1").Value 
Set pl = Sheets("Commandes").Range("B3:B" & Sheets("Commandes").Cells(Application.Rows.Count, 3).End(xlUp).Row)
For Each cel In pl
    If Year(cel.Value) = an And cel.Interior.ColorIndex <> 3 Then
        m = Format(cel.Value, "mmmm")
        On Error Resume Next
        With Sheets(m)
            If Err > 0 Then
                 MsgBox "l'onglet " & m & " n'existe pas dans ce classeur vous devez le créer !" 
                Exit Sub 
            End If
            Set dest = .Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
        End With 
        With cel.Range("A1:AF1") 
            .Copy dest 'la 
            .Interior.ColorIndex = 3 
        End With 
    End If 
Next cel 
 
End Sub
------------------------------------------

Fichier joint dans vos discussions