Je viens chiner un coup de main pour achever cette macro de malheur (simple aux yeux de certains ^^)
Je me lance : J'ai créé un temps de travail avec un feuille par mois (le nom de la feuille est celui du mois) et une feuille "facture"
J'ai une feuille par mois avec un "calendrier" et une somme en bout de ligne.
(ce sont des heures travailler : AH4:AH26)
Cette somme ce traduit dans la colonne directement à droite en fonction de mes critères de facturation (rechercheV = nombre d'heures ou "")
(Ce sont des heures à facturer : AK4:AK26)
Je souhaiterais coller ma ligne à facturer dans la cellule directement à droite
(Ce sont les heures facturer totales : AL4:AL26)
Mais cela ce complique quand je souhaite ne remplacer que les cellules vide (les autres étant déjà facturer précédemment. (objectif ne pas facturer 2 fois et avoir un suivit facturer / non facturer en temps réel).
Mon code :
Code:
Sub test()
'
' test Macro
'
Set origine = Range("AK4:AK26")
Set arrive = Sh.Range("AL4:AL26").SpecialCells(xlCellTypeFormulas, xlNumbers + xlTextValues)
With Sheets("Janvier")
If Cel <> "" Then Range(origine).Select
Selection.Copy
End If
Range(arrive).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
End Sub
Pour l'instant il ne fonctionne que sur Janvier mais il doit fonctionner a terme sur les 12 mois de l'année et renvoyer une erreur si colonne AL non vide.
Je sèche complètement car les arguments commencent à êtres nombreux et ma boucle ne stop pas xD.
Mes pages ont toutes les mêmes références (lignes cachés pour les mois a 29 / 31 jours).
Option Explicit
Sub test()
Dim origine As Range, arrive As Range
Set arrive = ActiveSheet.Range("AL4:AL26").SpecialCells(xlCellTypeBlanks)
Set origine = arrive.Offset(0, -1)
arrive.Value = origine.Value
Range("A1").Select
End Sub
Merci, ton code est bien mieux car il ne fait jamais d'erreur en cas de données déjà présentent !
Par contre j'ai fait du tri dans mes feuilles (à l'origine Janvier a Décembre et maintenant Septembre à Août) car ton code transférais les données de Septembre en Mars ! Je pense faire simplement une mise en forme conditionnelle en cas de doublon (ce qui permet d'écraser sans avoir d'erreur. Ou un Yes / No si je souhaite écraser mais par ligne ça va pas être facile ^^