2009-03-26 10 views
1

La liste: - "Fiche de problème" (feuille de calcul). J'ai une feuille Excel qui représente une liste de problèmes (lignes) dont la taille varie chaque jour (par exemple plus ou moins de lignes); Chaque rangée a reçu un nom; Le nom attribué est toujours dans la même colonne "M" de la "Fiche de problème"; Un nom d'assignation individuelle n'apparaît pas nécessairement tous les jours, ou il peut apparaître plusieurs fois (sur plus d'une ligne) un jour donné; J'ai déjà une macro qui crée une liste unique (feuille de calcul) de noms d'affectation où chaque nom apparaissant dans la colonne M de la fiche de problème est enregistré une fois dans la feuille de travail "Liste unique"; La même macro crée une seule nouvelle feuille de calcul (dans le même classeur) pour chaque occurrence unique d'un nom d'affectation. Le nom de l'affectation est enregistré automatiquement dans l'onglet de la feuille de calcul individuelle.Excel VBA Macro

Obligatoire: - Une macro qui vérifie la colonne M de la "feuille de problème" principale; Pour chaque ligne/problème où un nom d'affectation particulier apparaît dans la colonne M de la feuille de problème, associez le nom d'affectation à la feuille de calcul du même nom, puis copiez et collez les détails de la ligne entière première ligne vide de la feuille de calcul correcte (même nom attribué) dans le classeur existant. Cette routine doit être répétée pour chaque ligne de la feuille de problème.

+0

Y at-il une raison particulière qui vous oblige à utiliser Excel? Des choses comme ceci sont facilement accomplies dans SQL, et une base de données est d'où je suspecte que les données viennent de toute façon. Peut-être que cela peut être résolu dans la DB? – Tomalak

+0

Les données sont d'abord soumises à altération et ensuite à un peu de formatage, avant le tir du courrier, j'ai été informé que l'étape de formatage serait problématique en utilisant SQL, je sais déjà que ces étapes peuvent être faites dans VBA parce que je J'ai réussi cela, mais je suis maintenant bloqué au mailing –

+0

Aucun doute que c'est possible dans VBA. Mais ce sera une douleur dans le cul de travailler. Normalement, vous devez sélectionner les bons éléments dans SQL, puis les mettre dans Excel et les mettre en forme. Ne pas le mettre dans Excel d'abord, puis essayer d'imiter une requête SQL dans VBA ... – Tomalak

Répondre

0

Si l'ordre n'a pas d'importance, cela pourrait être votre meilleur pari

Sub x() 
    Dim rngProbs As Range 
    With ThisWorkbook.Worksheets("Problem Sheet") 
     Set rngProbs = .Range("M1", .Range("M1").End(xlDown)) 
    End With 

    Dim r As Range 


    For Each r In rngProbs 
     r.EntireRow.Copy 
     ThisWorkbook.Worksheets(r.Text).Rows(1).EntireRow.Insert 
    Next r 

End Sub 
+0

Réponse fonctionne parfaitement, a changé Rows (1) à Rows (2) pour éviter la barre de titre déjà en place dans chaque feuille. –