[Réglé] Copier une feuille vers une autre avec incrémentation ? Macro ? VBA ?

Service Numérique

XLDnaute Nouveau
Bonjour,

Après avoir parcouru Google de fond en comble, et ne trouvant pas de solution exacte à mon problème, je m'en remets à votre science.

Je possède un tableau récapitulatif ("Récap détaillé") avec des cellules qui vont chercher des données dans une feuille nommée "INTRANET".
Le problème est que la feuille "INTRANET" s'actualise toutes les 5 min (en fonction du statut des commandes).

Je souhaiterai, SI POSSIBLE, via un bouton, COPIER la feuille "INTRANET" vers "COMMANDES" afin que mes cellules fassent références à des données "fixes".

Je souhaiterai donc que les données de "INTRANET" S'INCRÉMENTENT dans "COMMANDES" (en évitant bien évidemment les doublons).

Plus d'infos dans le fichier en P.J.

Merci pour votre aide qui m'a permis de bien avancer ce tableau qui représente un grand gain de temps pour moi.
 

Pièces jointes

  • Exemple.xlsx
    158.6 KB · Affichages: 50

D.D.

XLDnaute Impliqué
Le seul hic, c'est que la macro m'incrémente TOUTES les données et donc créée des doublons
Ben oui. Ca prend à chaque fois toute la table. Ne prendre qu'une selection est bien plus compliqué.
Ou alors (attend 2 mn...)

Voila:
Ajoute
Range("Commandes!A:H").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8), Header:=xlYes
juste avant le End Sub de Recopier
 

Service Numérique

XLDnaute Nouveau
Ben oui. Ca prend à chaque fois toute la table. Ne prendre qu'une selection est bien plus compliqué.
Ou alors (attend 2 mn...)

Voila:
Ajoute
Range("Commandes!A:H").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8), Header:=xlYes
juste avant le End Sub de Recopier

PARFAIT !
Par contre (oui, il y a toujours un hic), ça ne garde pas le format de cellule en "TEXTE". Du coup, si je le change manuellement, il incrémente...

Bon, on verra lundi.

Merci pour tout et bon week-end.
 

D.D.

XLDnaute Impliqué
Hello,

copie colle ceci à la place de l'ancien code:

Sub Recopier()
'Sheets("Intranet").Select
Der = Range("Commandes!A1").End(xlDown).Row
If Der > 300000 Then Der = 1
Der2 = Range("Intranet!A1").End(xlDown).Row
'Range("Commandes!A" & Der + 1 & ":H" & Der + Der2 - 1) = Range("Intranet!A2:H" & Der2).Value
Range("Intranet!A2:H" & Der2).Copy Destination:=Range("Commandes!A" & Der + 1 & ":H" & Der + Der2 - 1)
Range("Commandes!A:H").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8), Header:=xlYes
End Sub
 

Service Numérique

XLDnaute Nouveau
Hello,

copie colle ceci à la place de l'ancien code:

Sub Recopier()
'Sheets("Intranet").Select
Der = Range("Commandes!A1").End(xlDown).Row
If Der > 300000 Then Der = 1
Der2 = Range("Intranet!A1").End(xlDown).Row
'Range("Commandes!A" & Der + 1 & ":H" & Der + Der2 - 1) = Range("Intranet!A2:H" & Der2).Value
Range("Intranet!A2:H" & Der2).Copy Destination:=Range("Commandes!A" & Der + 1 & ":H" & Der + Der2 - 1)
Range("Commandes!A:H").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8), Header:=xlYes
End Sub

MERCI pour tout ce que tu as fait !

Sujet clos pour ma part.
Bonne continuation.;)
 

D.D.

XLDnaute Impliqué
Hello,

Entre temps j'ai un nouveau code qui permet de mieux gérer les temporisations et exécutions régulières.
La macro s’exécute en arrière plan, en laissant la main possible à l'utilisateur.
Si ca peut t'aider ou te servir...
C'est plus propre que la tempo précédente ;) :p
 

Pièces jointes

  • Macro Execution arriere plan non bloquante.xlsm
    17.8 KB · Affichages: 3

Service Numérique

XLDnaute Nouveau
Hello,

Entre temps j'ai un nouveau code qui permet de mieux gérer les temporisations et exécutions régulières.
La macro s’exécute en arrière plan, en laissant la main possible à l'utilisateur.
Si ca peut t'aider ou te servir...
C'est plus propre que la tempo précédente ;) :p

Bonjour D.D.,

Ca tombe bien, je l'ai modifiée cette semaine en rajoutant un évènement "DoEvents" car il me semble qu'elle me fait bugguer Excel...

Je vais tester ça...
Je te remercie.
D'ailleurs, que rajoute-t-elle ? A quoi servent les boutons "on" et "off" ? A appeler la macro ?

Merci et bonne journée.
 

Service Numérique

XLDnaute Nouveau
Code:
Sub Action()
    While Fct_ON = True
        DoEvents
        ActiveSheet.[A1] = Now
    Wend
End Sub


J'insère ça où ?

VB:
Sub Recopier()
'Sheets("Intranet").Select
Der = Range("Commandes!A1").End(xlDown).Row
If Der > 300000 Then Der = 1
Der2 = Range("Intranet!A1").End(xlDown).Row
'Range("Commandes!A" & Der + 1 & ":H" & Der + Der2 - 1) = Range("Intranet!A2:H" & Der2).Value
Range("Intranet!A2:H" & Der2).Copy Destination:=Range("Commandes!A" & Der + 1 & ":H" & Der + Der2 - 1)
Range("Commandes!A:I").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8), Header:=xlYes
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 083
Messages
2 116 051
Membres
112 644
dernier inscrit
wad