Macro pour séparer des données sur plusieurs onglets en fonction d'un critère

dfuentes

XLDnaute Junior
Bonjour à tous,

Je débute en programmation et j'ai besoin de votre aide.

J'ai un planning que je voudrais extraire dans plusieurs onglets en fonction d'un critère stocké en colonne O.

Quelque chose ne va pas dans mon script puisqu'il n'extrait qu'une partie des données. Le bouton lançant le script est en haut à gauche du premier onglet (tout petit, je sais...)

Je suis certain que c'est erreur de GROS débutants.

Merci beaucoup d'avance pour votre aide.
 

Pièces jointes

  • 2012_PLANNING DES VENTES.xls
    197.5 KB · Affichages: 301
  • 2012_PLANNING DES VENTES.xls
    197.5 KB · Affichages: 305
  • 2012_PLANNING DES VENTES.xls
    197.5 KB · Affichages: 319

Papou-net

XLDnaute Barbatruc
Re : Macro pour séparer des données sur plusieurs onglets en fonction d'un critère

Bonsoir dfuentes,

Je te propose de remplacer ta macro de copie par celle-ci :

Code:
Sub Copie()
Dim Sh As Object, Lg As Long
With ActiveSheet
  For Each cel In .Range("O2:O" & .Range("O" & Rows.Count).End(xlUp).Row).Cells
    Set Sh = Sheets("2012_" & cel.Value)
    Lg = Sh.Range("B" & Rows.Count).End(xlUp).Row + 1
    .Range("B" & cel.Row & ":O" & cel.Row).Copy Destination:=Sh.Range("B" & Lg)
  Next
End With
End Sub
Qui fait la même chose si j'ai bien compris la question

C'est beaucoup plus simple, n'est-il pas ?

Espérant avoir répondu.

Cordialement.
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Macro pour séparer des données sur plusieurs onglets en fonction d'un critère

Bonjour dfuentes,

C'est exact, j'ai négligé la gestion des doublons.

Voici qui devrait être réparé :

Code:
Sub Copie()
Dim Sh As Object, Lg As Long
With ActiveSheet
  For Each cel In .Range("O2:O" & .Range("O" & Rows.Count).End(xlUp).Row).Cells
    Set Sh = Sheets("2012_" & cel.Value)
    Lg = Sh.Range("B" & Rows.Count).End(xlUp).Row + 1
    If Application.WorksheetFunction.CountIf(Sh.Range("B:B"), Range("B" & cel.Row).Value) = 0 Then _
      .Range("B" & cel.Row & ":O" & cel.Row).Copy Destination:=Sh.Range("B" & Lg)
  Next
End With
End Sub
En te souhaitant un bon dimanche.

Cordialement.
 

damaelyon

XLDnaute Nouveau
Re : Macro pour séparer des données sur plusieurs onglets en fonction d'un critère

Bonjour à tous,

Je me permets de remonter ce sujet car la macro m'intéresse particulièrement.

J'aimerais cependant y insérer une gestion des mises à jour. C'est à dire que la macro soit capable de détecter si la répartition a déjà été faite et corriger la ligne associé s'il y a eu mise à jour dans le premier onglet.
 

ric06nice

XLDnaute Nouveau
Re : Macro pour séparer des données sur plusieurs onglets en fonction d'un critère

bonjour, la macro est trés interessante, et je voudrais savoir comment faire pour que la répartition des données se fassent sur les différents onglets à la ligne 5 par exemple merci

Code :


Sub Copie()
Dim Sh As Object, Lg As Long
With ActiveSheet
For Each cel In .Range("O2:O" & .Range("O" & Rows.Count).End(xlUp).Row).Cells
Set Sh = Sheets("2012_" & cel.Value)
Lg = Sh.Range("B" & Rows.Count).End(xlUp).Row + 1
If Application.WorksheetFunction.CountIf(Sh.Range("B:B"), Range("B" & cel.Row).Value) = 0 Then _
.Range("B" & cel.Row & ":O" & cel.Row).Copy Destination:=Sh.Range("B" & Lg)
Next
End With
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 769
Membres
103 662
dernier inscrit
rterterert