Copier lignes d'une feuille avec conditions VBA

Bonjour à tous,

J'ai beau chercher dans les forums mais je ne trouve pas de solutions adapté à mon cas.

Je souhaite recopier les lignes de la feuille "Mandats" vers la feuille "Gestion" mais avec la condition si la case "Pub" est égale à "1" à l'aide d'un bouton vba.

Précision : Le nombre de lignes dans "Mandats" varie bien sur et certaines cases peuvent être vides.

Ensuite, actualiser les données de temps à autre.

Merci pour votre aide.

12actualisation.xlsm (16.16 Ko)

Salut et bienvenue sur le Forum,

Dans le fichier ci-joint il y a une macro placée derrière ton bouton qui devrait réaliser en partie ton souhait.

Au préalable, j’ai modifié ta feuille afin qu’elle puisse accueillir proche de 1000 reports ; ta ligne des totaux est donc déplacée à la ligne 1001.

Ce code fait à peu près ceci : il efface les données en place dans la plage A2:Y1000 de ta feuille ‘Gestion’, reporte les données de certaines colonnes de la feuille ‘Mandats’ à la feuille ‘Gestion’ et ouvre le nombre de lignes nécessaires selon le nombre de reports.

Comme je n’ai pas tout compris de tes tableaux, je n’ai reporté que quelques données de certaines colonnes pour l’exemple. A compléter soit par toi, soit par moi par la suite.

Il est bien entendu que si l’ordre des colonnes avait été le même sur les deux feuilles, le travail aurait été beaucoup plus facile.

Cordialement.

33actualisation-v1.xlsm (115.44 Ko)

Merci beaucoup Yvouille, c'est super, c'est simple mais efficace et ca marche très bien.

Sinon, si j'ai bien compris le "j" sert à rattraper la différence de l'entête de 2 lignes sur l'un et 1 ligne sur l'autre.

Donc si je rajoute une numérotation à l'entête de la feuille Gestion, je n'ai plus besoin du "j".

Aussi, à quoi sert la formule en haut "Option Explicit" ?

Bon week end et encore merci.

Salut,

Pour l’instruction Option Explicit, je te laisse voir l’aide Excel qui est très bien foutue : tu sélectionnes les mots Option Explicit et tu tapes F1.

Pour le j, c’est une sorte de compteur qui permet à chaque nouvelle ligne de la feuille de base à reporter de la reporter à la bonne ligne de la feuille cible, d’où l’incrémentation de 1 à chaque fois.

Le j = 1 au début est juste car ta première ligne à remplir est la 2. Donc j prend déjà la valeur de 1 au départ, ensuite, aux premiers reports, ça prend la valeur 2 et la deuxième ligne – selon la numérotation Excel - sera remplie. Aux deuxièmes reports, j va devenir 3 et c’est la troisième ligne de ta feuille cible qui sera remplie, etc.

Même si tu numérotes tes lignes dans la feuille cible, il faudra quand même indiquer dans le code à quelle ligne doivent être reportées les données. Ou alors je n’ai pas compris ce que tu veux dire et il faut éventuellement créer ton code comme tu l’entends et voir si ça marche (ce qui m’étonnerait ).

Amicalement.

Ok, merci pour l'explication du "j" car je m'étais fais une autre interprétation de cette condition.

Mille mercis.

Bonne journée et bonne continuation.

Rechercher des sujets similaires à "copier lignes feuille conditions vba"