Copie de lignes Excel dans des onglets sous conditions

leana

XLDnaute Nouveau
Bonjour à tous,

Grace à l'aide d'un membre du forum j'ai réalisé un fichier Excel me permettant de copier les lignes de commandes qui répondent à 3 conditions dans un onglet correspondant à leur nom de contact d'achat (qui est une des colonnes d'une ligne de commande).
En sachant que le nom qui apparait dans la ligne de commande doit être identique à celui de l'onglet pour qu'il puisse se copier.

Il y a donc un onglet par nom de contact d'achat connu. Il y a aussi un onglet "Autres" car quand le nom n'est pas précisé c'est cette valeur qui s'affiche.

Mon problème est le suivant: au fil du temps et des embauches les contacts d'achat seront emmenés à bouger, il y en aura des nouveaux. Et dans ce cas ma macro ne fonctionne pas...

J'ai beau tourner mon code dans tous les sens, je ne trouve pas comment copier ces lignes de commandes qui ont des contacts d'achat nouveaux dans l'onglet "Autres"...

Je m'en remet donc à votre expertise ;) Je vous joins le code de ma macro:

Code:
Option Explicit
Sub Répartir_si_conditions_remplies()
Dim o As Worksheet
Dim i As Long
Dim copier_vers As String
Application.ScreenUpdating = False
For Each o In Worksheets
    If o.Name <> "Accueil" And o.Name <> "Listing Cda" Then
        With o
            .Activate
            .Range(Range("a3"), Range("a3").End(xlToRight).End(xlDown)).Clear
        End With
    End If
Next
Sheets("Listing Cda").Activate
For i = 3 To Range("a65536").End(xlUp).Row
    If Range("a" & i).Offset(, 34).Value = "Oui" Then
    If Range("a" & i).Offset(, 36).Value = "Non reçu" Or Range("a" & i).Offset(, 36).Value = "Partiel" Then
           If Date - Range("a" & i).Offset(, 22).Value > 4 Then
        Range("a" & i).Offset(, 0).Resize(, 38).Select
        copier_vers = Cells(i, 11).Value
        [COLOR="#FF0000"]Selection.Copy Destination:=Sheets(copier_vers).Range("a65536").End(xlUp).Offset(1, 0)[/COLOR]        
Sheets("Listing Cda").Activate
           End If
     End If
End If
Next
Range("a1").Select
Application.ScreenUpdating = True
End Sub

C'est la ligne en rouge qui apparaît en erreur lorsque je lance la macro sur un listing de commandes comprenant des contacts d'achat inconnus.

Je vous joins également mon fichier:
- les intitulés de colonnes en rouge sont ceux dont dépendent les 3 conditions
- les lignes de commandes en jaune sont celles qui répondent à ces conditions et donc qui se copient dans les onglets au lancement de la macro
- les noms de contact achat en vert sont ceux qui sont inconnus.


Je n'attend pas forcément une correction toute faite, mais même des pistes pourront m'aider, sachant que je suis novice et en plein apprentissage de ce langage :)

Merci d'avance à tous, c'est grace à vos participations que j'ai déjà pu en arriver là !
 

Pièces jointes

  • Copie de Reception_Cda.xls
    252.5 KB · Affichages: 63

titiborregan5

XLDnaute Accro
Re : Copie de lignes Excel dans des onglets sous conditions

Bonjour leana, le forum,
si j'ai bien compris la demande:
tu souhaites avoir une feuille par acheteur et ceux qui sont intitulés autres tous sur la même feuille autre? ensuite tu y mets les infos que tu veux, voir la ligne?
 

leana

XLDnaute Nouveau
Re : Copie de lignes Excel dans des onglets sous conditions

Bonjour Titi, merci de ta réponse rapide.

Pour te répondre:
- j'ai bien une feuille par acheteur (en sachant que je crée moi même ces feuilles)
- j'ai créé une feuille "autres" car sur certaines lignes de commandes il n'y a aucun nom renseigné, par défaut (via une autre macro) ces champs prennent la valeur "autres" pour correspondre à l'onglet et ainsi s'y faire copier

- j'aurai à faire face à des noms de contacts d'achats qui n'ont pas de feuilles à leur nom car nouveaux, c'est ceux là qui doivent aller dans l'onglet "autres", leurs commandes seront donc mélangées aux commandes qui n'avaient pas de contact d'achat au départ (par simplification ce sera l'utilisateur final qui aura la charge de créer son onglet)

J'espère avoir été suffisamment claire ? :)
 

titiborregan5

XLDnaute Accro
Re : Copie de lignes Excel dans des onglets sous conditions

est ce que les nouvelles "commandes" viennent se mettre à la suite des autres? En gros, est ce que la macro peut tout relancer depuis le début à chaque fois?

si oui, ce n'est pas "hyper compliqué" et les nouvelles feuilles pour les nouvelles personnes se crée(ront)nt toutes seules...
donc ça limite les "autres"...
 

leana

XLDnaute Nouveau
Re : Copie de lignes Excel dans des onglets sous conditions

Malheureusement je crains les doublons de commande avec cette technique.

L'organisation est telle que certaines commandes peuvent rester une année entière sans réception actée, donc une ligne sera créée pour une même commande à chaque utilisation.

Ce cas de figure complique la tâche ?
 

leana

XLDnaute Nouveau
Re : Copie de lignes Excel dans des onglets sous conditions

Oui dit comme ça c'est effectivement la solution...je suis désolée je passe mes journées dessus et je manque cruellement de recul sur la situation !

L'idée serait, par exemple, un bouton sur la page d'acceuil qui réinitialiserait tous les onglets à partir des lignes 3 (lignes 1 et 2 sont des intitulés de colonnes) ?
 

leana

XLDnaute Nouveau
Re : Copie de lignes Excel dans des onglets sous conditions

Je suis désolée mais je t'ai mis sur une fausse piste,

le progiciel sur lequel nous sortons nos listes de commandes n'est pas suffisamment fiable, il peut sortir le listing sur un mois comme sur une année suivant les jours...

Il faut donc une page de listing que l'utilisateur rendrait vierge avant toute utilisation.
 

leana

XLDnaute Nouveau
Re : Copie de lignes Excel dans des onglets sous conditions

Je suis un peu tatillone mais ce fichier Excel doit réellement automatiser le travail de l'utilsateur, et même un simple filtrage dans la requête du progiciel pour isoler les commandes en fonction des dates ne sera pas accepté...
 

leana

XLDnaute Nouveau
Re : Copie de lignes Excel dans des onglets sous conditions

Je vais prendre un exemple:

la commande 1001 aurait du être réceptionnée le 10 Mars. L'utilisateur utilise le fichier le 15 Mars, la commande sera donc copiée dans l'onglet de son contact d'achat puisque l'échéance est passée de 5 jours.

La commande 1001 a été réceptionnée le 25 Mars. Le 01 Avril, l'utilisateur vide les onglets, et ajoute la suite du listing au bas de l'actuel. Sur cette nouvelle partie du listing la commande apparaîtra comme réceptionnée et ne sera pas prise en compte.

Sauf qu'elle sera toujours présente en tant que non réceptionnée dans la partie du listing qui concernait le 15 Mars. Elle sera alors copiée dans l'onglet correspondant alors qu'elle a bien été réceptionnée.
 

Si...

XLDnaute Barbatruc
Re : Copie de lignes Excel dans des onglets sous conditions

Salut

Doublezero :D avait apporté une réponse à ta première demande en te précisant bien que les noms de feuilles devaient correspondre.
Pour éviter d’autres erreurs de saisie (Reçu n’est pas reçu) il serait peut-être intéressant de passer par des listes de validation avec une feuille de base.
Dans le fichier joint que je reprends avec des explications, la répartition se refait sans cumul par un double-clic après avoir fixé de nombre de jours de délai. Mais je le répète encore, les feuilles cibles doivent exister et être nommées convenablement.
A la rigueur, tu peux te contenter de la macro de répartition, qui plus est, lancée à ta convenance.
 

Pièces jointes

  • Données réparties si .xls
    267 KB · Affichages: 34

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 461
dernier inscrit
dams94