Couper/coller automatique

  • Initiateur de la discussion Initiateur de la discussion Marielou25
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

Marielou25

Guest
Bonjour,

Je suis débutante en langage VBA et j'ai vraiment besoin d'aide...
A partir du fichier joint, j'aimerais provoquer une exécution automatique pour que toutes les ventes antérieures à 1 an se reportent directement dans l'onglet "historique" et se suppriment de l'onglet "stock" (autrement dit couper/coller).
Quelqu'un peut-il m'aider ?

Merci beaucoup 🙂

Marie
 

Pièces jointes

Re : Couper/coller automatique

Bonjour, 🙂

Marielou25 et moi-même avons essayé d'appliquer les codes sur notre fichier source.
Pas de problème à l'ouverture si il y a un article à archiver. Mais si il y en a aucun cela met à l'ouverture :

Erreur d'exécution '13' Incompatibilité de type

En cliquant sur Débogage j'ai accés à mon code

Sub Archiver()
Dim tab1, tab2
Dim d As Date
Dim i#, dl#, msg$
With Feuil3
tab1 = .Range("n4:N" & .Range("J65000").End(xlUp).Row).Value
For i = UBound(tab1) To 1 Step -1
If IsDate(tab1(i, 1)) Then
d = CDate(tab1(i, 1))
If Date > DateSerial(Year(d) + 1, Month(d), Day(d)) Then
msg = msg & .Cells(i + 3, 1) & vbCr
tab2 = .Cells(i + 3, 1).Resize(1, 19).Value
With Feuil4
dl = .Range("A65000").End(xlUp).Row + 1
.Cells(dl, 1).Resize(1, 19) = tab2
End With
.Rows(i + 3).EntireRow.Delete
End If
End If
Next
End With
If msg <> "" Then MsgBox "Ces articles ont été archivés:" & vbCr & msg
End Sub

La ligne mise en gras et soulignée est celle qui s'affiche surlignée en jaune. Je pensais avoir tout adapaté mais un problème persiste. Dans le code j'ai changé les noms de feuilles et également les cellules concernées (mis en italique).

Merci pour votre aide,
Cordialement.
 
Re : Couper/coller automatique

Bonjour,
Désactive les automatismes lorsque tu joins un fichier, c'est fort désagréable...
J'utilise le CodeName des feuilles et non pas leur nom (celui affiché dans les onglets), ça évite les embrouilles lorsque qu'on décide de renommer les feuilles
En outre, les dates sont dans la colonne K et non pas N et le nb de colonnes est 13 et non pas 19
Par contre, je ne sais pas dans quelle feuille exporter les lignes donc tu adapteras
Pour garder l'idée du tableau (pour une question de rapidité s'il y a beaucoup d'items)
Code:
Sub Archiver()
Dim tab1, tab2
Dim D As Date
Dim i#, dl#, msg$
With Base_articles 'codename de la feuille Base articles
    tab1 = .Range("K1:K" & .Range("K65000").End(xlUp).Row).Value
    For i = UBound(tab1) To 1 Step -1
        If IsDate(tab1(i, 1)) Then
            D = CDate(tab1(i, 1))
            If Date > DateSerial(Year(D) + 1, Month(D), Day(D)) Then
                msg = msg & .Cells(i, 1) & vbCr
                tab2 = .Cells(i, 1).Resize(1, 13).Value
                With Feuil4 'codename de la feuille qui reçoit les lignes exportées ???
                    dl = .Range("A65000").End(xlUp).Row + 1
                    .Cells(dl, 1).Resize(1, 13) = tab2
                End With
                .Rows(i).EntireRow.Delete
            End If
        End If
    Next
End With
If msg <> "" Then MsgBox "Ces articles ont été archivés:" & vbCr & msg
End Sub
Reviens si ça coince
A+
kjin
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
Réponses
11
Affichages
2 K
D
A
Réponses
17
Affichages
3 K
Ananas94
A
J
Réponses
5
Affichages
5 K
jomortuary
J
V
Réponses
7
Affichages
1 K
vinzenty
V
N
Réponses
19
Affichages
3 K
G
Réponses
12
Affichages
2 K
D
Réponses
2
Affichages
2 K
Retour