Mak_tarmak
XLDnaute Junior
Bonjour,
Pour le contexte, je débute dans le monde VBA. Je comprends le code mais je n’arrive pas encore à créer tout seul.
J’ai un traitement à faire sur la feuille « Worksheet » d’un fichier (extraction d’une appli web) qui m’est fourni par un collègue.
Dans ce fichier, seules les colonnes B à H m’intéressent.
Dans ce fichier, j’ai créé une feuille ATTESTATIONS et une feuille RELIQUAT qui va accueillir les données de « Worksheet » selon des critères.
Je crée deux feuilles différentes car les données de ATTESTATIONS serviront à alimenter une base de données (autre onglet) pour faire du publipostage et RELIQUAT me sert à avoir la liste des personnes qui ne répondaient pas aux critères et qui seront relancés par mail ou servira à faire un listing des personnes.
Tout ce qui va dans ATTESTATIONS c’est la recopie de B à H de la feuille « Worksheet » pour les personnes qui ont une date dans la colonne G et une note supérieure à 10 dans la colonne H.
Tout ce qui va dans RELIQUAT, c’est tout le reste des personnes même si une des deux colonnes est vide voire les deux.
Je dois retrouver dans ces deux feuilles toutes les personnes de Worksheet.et les entêtes de colonne.
Dans ma macro TraitementDATA() :
Je commence par supprimer la ligne qui contient « MOYENNE/THÉMATIQUE » dans « Worksheet » (cette ligne peut se trouver à n’importe quelle ligne)
je tri la colonne B par ordre alphabétique
je fais un petit nettoyage pour enlever l’image qui se nomme « General » mais elle n’est pas toujours présente
je dispatche les données dans ATTESTATIONS et RELIQUAT en fonction des critères énoncés plus haut. (j’ai mis un DoEvents après Activesheet.Paste car j’ai souvent une erreur 1004 mais ça plante toujours)
je supprime les lignes vides
Ma problématique première c’est la procédure FiltreWS mais aussi l’optimisation globale de mon code car j’ai utilisé l’enregistreur de macro par moment et le code est sûrement « sale ».
J’ai adapté un code trouvé sur le forum pour FiltreWS.
Vous verrez dans le fichier mais cette procédure lit ma feuille Worksheet de haut en bas et recopie les données dans les autres feuilles mais la feuille RELIQUAT n’a pas d’entête de colonne.
Peut-être que j’ai choisi la mauvaise procédure ou que je l’ai mal adapté. De plus, j’ai le problème sur la méthode Activesheet.Paste et je ne comprends pas pourquoi.
J’espère avoir été clair dans mes propos.
Merci pour votre aide,
Kader
Pour le contexte, je débute dans le monde VBA. Je comprends le code mais je n’arrive pas encore à créer tout seul.
J’ai un traitement à faire sur la feuille « Worksheet » d’un fichier (extraction d’une appli web) qui m’est fourni par un collègue.
Dans ce fichier, seules les colonnes B à H m’intéressent.
Dans ce fichier, j’ai créé une feuille ATTESTATIONS et une feuille RELIQUAT qui va accueillir les données de « Worksheet » selon des critères.
Je crée deux feuilles différentes car les données de ATTESTATIONS serviront à alimenter une base de données (autre onglet) pour faire du publipostage et RELIQUAT me sert à avoir la liste des personnes qui ne répondaient pas aux critères et qui seront relancés par mail ou servira à faire un listing des personnes.
Tout ce qui va dans ATTESTATIONS c’est la recopie de B à H de la feuille « Worksheet » pour les personnes qui ont une date dans la colonne G et une note supérieure à 10 dans la colonne H.
Tout ce qui va dans RELIQUAT, c’est tout le reste des personnes même si une des deux colonnes est vide voire les deux.
Je dois retrouver dans ces deux feuilles toutes les personnes de Worksheet.et les entêtes de colonne.
Dans ma macro TraitementDATA() :
Je commence par supprimer la ligne qui contient « MOYENNE/THÉMATIQUE » dans « Worksheet » (cette ligne peut se trouver à n’importe quelle ligne)
je tri la colonne B par ordre alphabétique
je fais un petit nettoyage pour enlever l’image qui se nomme « General » mais elle n’est pas toujours présente
je dispatche les données dans ATTESTATIONS et RELIQUAT en fonction des critères énoncés plus haut. (j’ai mis un DoEvents après Activesheet.Paste car j’ai souvent une erreur 1004 mais ça plante toujours)
je supprime les lignes vides
Ma problématique première c’est la procédure FiltreWS mais aussi l’optimisation globale de mon code car j’ai utilisé l’enregistreur de macro par moment et le code est sûrement « sale ».
J’ai adapté un code trouvé sur le forum pour FiltreWS.
Vous verrez dans le fichier mais cette procédure lit ma feuille Worksheet de haut en bas et recopie les données dans les autres feuilles mais la feuille RELIQUAT n’a pas d’entête de colonne.
Peut-être que j’ai choisi la mauvaise procédure ou que je l’ai mal adapté. De plus, j’ai le problème sur la méthode Activesheet.Paste et je ne comprends pas pourquoi.
J’espère avoir été clair dans mes propos.
Merci pour votre aide,
Kader