Problème d'enregistrement sous vba

ptgie

XLDnaute Nouveau
Bonjour le forum,:cool:
J'ai déjà commencé a créé un code pour copier une sélection puis la coller dans un autre classeur mais ce code ne répond pas à toutes mes attentes. :(
Je souhaiterais pouvoir remplacer le nom de mes feuilles dans mon classeur archive par le mois concerner, de plus quand je passe sur l'année 2013 le copier-coller recommence en feuil1 et non pas en feuil13 comme je voudrais qu'il se fasse. Pouvais vous m'aidez svp:eek:


Merci d'avance pour votre aide et très vite jspr..:D
 

Pièces jointes

  • nouvelle facturation.macro.xlsm
    38.9 KB · Affichages: 70
  • Archive Achat.xlsx
    16.3 KB · Affichages: 481
  • nouvelle facturation.macro.xlsm
    38.9 KB · Affichages: 73
  • Archive Achat.xlsx
    16.3 KB · Affichages: 542
  • nouvelle facturation.macro.xlsm
    38.9 KB · Affichages: 73
  • Archive Achat.xlsx
    16.3 KB · Affichages: 578
G

Guest

Guest
Re : Problème d'enregistrement sous vba

Bonjour,

Ton classeur Archive s'apelle 'Archive Achat.xls' et pas 'Archive ventes.xls' comme dans ta macro.

Code:
Sub Macro2()
Dim shDestination As Worksheet
Dim NomFeuille As String
NomFeuille = Range("I13") & " " & Range("I14")
'La function GetWorkSheet créera la feuille au besoin
Set shDestination = GetWorkSheet(NomFeuille, Workbooks("Archive Achat.xlsx"), True)
If shDestination Is Nothing Then Exit Sub '
shDestination.Cells.ClearContents
Range("A2:F42").Copy
shDestination.Cells(1, shDestination.UsedRange.Columns.Count).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub

Function GetWorkSheet(SheetName As String, Optional Wkb As Workbook = Nothing, Optional CreateIfNotExists As Boolean = False) As Worksheet
'Hasco
    If Wkb Is Nothing Then Set Wkb = ActiveWorkbook
    On Error Resume Next
    Set GetWorkSheet = Wkb.Sheets(SheetName)
    If GetWorkSheet Is Nothing And CreateIfNotExists Then
        Set GetWorkSheet = Wkb.Sheets.Add
        GetWorkSheet.Name = SheetName
    End If
End Function

Comme tu le verras, il n'y a pas de contrôle concernant l'ouverture ou non du classeur Archives. A toi de jouer.

A+
 

ptgie

XLDnaute Nouveau
Re : Problème d'enregistrement sous vba

Merci Hasco mais ton code ne fait pas ce que je souhaite,:(

La macro1 controle le classeur achat et la macor2 controle le classeur vente.:cool:
Je souhaiterai que les macro1 et 2, copie colle dans leur classeur respectif les factures crée dans le classeur "nouvelle facturation" tout en les classant suivant le mois et l'année écrit dans l'onglet des archives.

Merci pour ton aide.:cool:
Bise
 

Pièces jointes

  • Archive Vente.xlsx
    14.2 KB · Affichages: 37
  • Archive Vente.xlsx
    14.2 KB · Affichages: 43
  • Archive Vente.xlsx
    14.2 KB · Affichages: 40

ptgie

XLDnaute Nouveau
Re : Problème d'enregistrement sous vba

Je suis dsl mais sa ne fait rien apart crée un nouvel onglet "2012" dans archive achat ou s'enregistre les factures en s'écrasant les une sur les autres a chaque nouveau enregistrement et peut importe le mois..

A+
 
G

Guest

Guest
Re : Problème d'enregistrement sous vba

Re,

J'ai fait en fonction de ce que tu disais au post 1 et de ce que tes macros montraient. Maintenant si c'est pas ça, c'est que les explications ne sont pas suffisament claires.

A+
 
Dernière modification par un modérateur:

ptgie

XLDnaute Nouveau
Re : Problème d'enregistrement sous vba

Excuse-moi si je me suis mal fait comprendre.

Mon situation actuelle est::cool:
Pour l'instant j'ai réussie a créé deux macro (une pour l'onglet vente et une pour l'onglet achat) qui copier-coller les factures crée dans ces même onglets dans les deux classeurs archive sans les écraser à chaque enregistrement.

Mon problème est::mad:
Cette macro ne prend pas en compte ma liste déroulante concernant les années elle enregistre donc janvier 2013 dans le même onglet que janvier 2012 ce qui ne me convient. De plus dès que je change le nom de mon onglet feuil1 en janvier 2012 par exemple ma macro m'indique un code erreur '9' (elle ne retrouve plu le bon onglet).

Ce que j'envisage::D
Je souhaiterai donc pouvoir enregistré ma facture de Janvier 2012 dans mon onglet JANVIER 2012 et ma facture de JANVIER 2013 dans mon onglet JANVIER 2013.

Est-ce-que cela parait plus clair maintenant ou toujours pas?
Merci d'avance
 

Pièces jointes

  • Archive Vente.xlsx
    14.2 KB · Affichages: 41
  • nouvelle facturation.macro.xlsm
    41.1 KB · Affichages: 72
  • Archive Achat.xlsx
    16.1 KB · Affichages: 483
  • Archive Vente.xlsx
    14.2 KB · Affichages: 36
  • nouvelle facturation.macro.xlsm
    41.1 KB · Affichages: 72
  • Archive Achat.xlsx
    16.1 KB · Affichages: 482
  • Archive Vente.xlsx
    14.2 KB · Affichages: 43
  • nouvelle facturation.macro.xlsm
    41.1 KB · Affichages: 59
  • Archive Achat.xlsx
    16.1 KB · Affichages: 402
G

Guest

Guest
Re : Problème d'enregistrement sous vba

Re

Dernière tentative pour moi. Attention veiller à mettre dans les mêmes cellule de 'Achat' et 'Vente' le mois et l'année!
Attribuer Macro2 au deux boutons des feuilles. Achat et Vente.
Code:
Sub Macro2()
    Dim Wkb As Workbook
    Dim shDestination As Worksheet
    Dim NomFeuille As String
    If ActiveSheet.Name = "Achat" Then
        Set Wkb = Workbooks("Archive Achat.xlsx")
    ElseIf ActiveSheet.Name = "Vente" Then
        Set Wkb = Workbooks("Archive Vente.xlsx")
    Else
        Exit Sub
    End If
    If Wkb Is Nothing Then Exit Sub
    
    'ATTENTION il faut que le mois et l'année soient dans les mêmes cellule de chaque feuille
    NomFeuille = Range("I13") & " " & Range("I14")
    'La function GetWorkSheet créera la feuille au besoin
    Set shDestination = GetWorkSheet(NomFeuille, Wkb, True)
    If shDestination Is Nothing Then Exit Sub    '
    Range("A2:F42").Copy
    With shDestination
        .Cells(1, .UsedRange.Columns.Count).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    End With
    Application.CutCopyMode = False
End Sub
Function GetWorkSheet(SheetName As String, Optional Wkb As Workbook = Nothing, Optional CreateIfNotExists As Boolean = False) As Worksheet
'Hasco
    If Wkb Is Nothing Then Set Wkb = ActiveWorkbook
    On Error Resume Next
    Set GetWorkSheet = Wkb.Sheets(SheetName)
    If GetWorkSheet Is Nothing And CreateIfNotExists Then
        Dim sh As Worksheet, i As Integer
        With Wkb
            Set sh = .Worksheets(1)
            For i = 2 To .Sheets.Count
                If IsDate(.Sheets(i).Name) And IsDate(sh.Name) Then
                    If CDate("1 " & SheetName) > CDate("1 " & sh.Name) And CDate("1 " & SheetName) < CDate("1 " & .Sheets(i).Name) Then Exit For
                End If
                Set sh = .Sheets(i)
            Next
            Set GetWorkSheet = .Sheets.Add(After:=sh)
            GetWorkSheet.Name = SheetName
        End With
    End If
End Function
A+
 

ptgie

XLDnaute Nouveau
Re : Problème d'enregistrement sous vba

Bonjour le forum,

J'ai un petit problème dans le code que ma très gentiment fait Hasco quand je copie-colle plusieurs factures dans un même onglet tous mes copier-coller se font en écrasant systématiquement la dernière colonne de l'ancienne facture (colonne TTC). Je n'arrive pas à trouver l'érreur dans le code pouvait m'aider svp?

Merci d'avance pour vos réponsses.
 

Pièces jointes

  • Archive Vente.xlsx
    52.8 KB · Affichages: 50
  • Archive Achat.xlsx
    98.2 KB · Affichages: 69
  • nouvelle facturation.macro.xlsm
    43.3 KB · Affichages: 52
  • Archive Vente.xlsx
    52.8 KB · Affichages: 48
  • Archive Achat.xlsx
    98.2 KB · Affichages: 68
  • nouvelle facturation.macro.xlsm
    43.3 KB · Affichages: 64
  • Archive Vente.xlsx
    52.8 KB · Affichages: 40
  • Archive Achat.xlsx
    98.2 KB · Affichages: 62
  • nouvelle facturation.macro.xlsm
    43.3 KB · Affichages: 49
Dernière édition:
G

Guest

Guest
Re : Problème d'enregistrement sous vba

Bonjour,

Rajouté en tête de procédure une nouvelle variable
Code:
Dim Col as long

En bas de la procédure:
Code:
    With shDestination.UsedRange
        col = IIf(.Columns.Count = 1, 1, .Column + .Columns.Count + 1)
        .Cells(1, col).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    End With

A+
 

ptgie

XLDnaute Nouveau
Re : Problème d'enregistrement sous vba

Quand je rajoute se nouveau code au précédent code, cela me crée un décalage que une foi sur deux. Et malgré 10000 tentatives je ne trouve toujours pas ce qui faudrait rajouter ou enlever dans le code d'Hasco.
Merci pour votre aide.
 

Pièces jointes

  • Archive Achat.xlsx
    114.4 KB · Affichages: 41
  • nouvelle facturation.macro.xlsm
    43.4 KB · Affichages: 44
  • Archive Vente.xlsx
    52.8 KB · Affichages: 40
  • Archive Achat.xlsx
    114.4 KB · Affichages: 38
  • nouvelle facturation.macro.xlsm
    43.4 KB · Affichages: 47
  • Archive Vente.xlsx
    52.8 KB · Affichages: 31
  • Archive Achat.xlsx
    114.4 KB · Affichages: 34
  • nouvelle facturation.macro.xlsm
    43.4 KB · Affichages: 53
  • Archive Vente.xlsx
    52.8 KB · Affichages: 44

Statistiques des forums

Discussions
312 428
Messages
2 088 342
Membres
103 821
dernier inscrit
Lorient56