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
Partager