VBA remplissage automatique d'un tableau

Bonjour,

Vous est-il possible de me venir en aide s'il vous plaît. J'ai une macro qui fonctionnait très bien jusqu'à que j'ajoute une colonne.

Je vous explique et pour une meilleure compréhension, je vous joindrai un fichier DEMO.

La macro fonctionnait très bien quand il y avait dans le fichier intitulé "BD" 2 colonnes soit en colonne "W" CM d'indiqué, en colonne X "TD" d'indiqué, avec CM1 à CM200 et TD1 à TD200 sur la longueur du tableau.

Du fait que j'ai décalé le CM de la colonne "W" à la colonne "V", le TD de la colonne "X" à la colonne "W" et ajouté une colonne intitulé "PA" en colonne "X" avec l'ajout des colonnes PA1 à PA200, la macro ne s'exécute plus. J'ai beau chercher mais quelque chose m'échappe et je ne vois pas à quel endroit de la macro.

Le but de cette macro est qu'en choisissant dans le menu déroulant de la feuille "page 2" un nom en cellule C2, les informations le concernant se copie automatiquement dans le tableau de cette même page en prenant les informations dans la feuille intitulé "BD" et uniquement pour les lignes remplies.

Je remercie par avance les personnes qui pourront m'apporter leur connaissance

Bonjour,

Je n'ai peut-être pas compris le souci, mais pour chaque personne dans chaque matière associée à la personne, si des résultats sont inscrits ... même des 0 ... la macro semble faire son travail.

Autre chose, si la macro était associée au bouton "Extraire les données" de la feuille "page2", il ne l'est plus. Il faudrait refaire le lien.

ric

Bonjour,

Merci beaucoup Ric pour ta rapidité !

la macro était associée au bouton "Extraire les données" de la feuille "page2", juste pour permets de créer un document PDF et de l'imprimer mais rien à voir avec le remplissage du tableau. j'avais lors de l'envoi de mon fichier demo supprimé dans la macro la partie entre [ ]

'Ensuite sur la même ligne on copie TD et CM en tenant compte de la position des données (OffsetFromC)

NewPage2Row.Range(1, 7) = Cell.Value

NewPage2Row.Range(1, 8) = Cell.Offset(, 1).Value

End If

Next

End With

['On redéfini la zone d'impression

Feuil2.PageSetup.PrintArea = Feuil2.UsedRange.Address]

[ 'On désactive la mise à jour de l'affichage

Application.ScreenUpdating = True]

End Sub

J'ai supprimé les 0 et normalement avec les codes ci-dessous, la macro aurait dû tourner où je me trompe

If (Cell.Value <> "") And (Cell.Offset(, 1).Value <> "") Then

If (Cell.Offset(, 1).Value <> "") And (Cell.Offset(, 2).Value <> "") Then

Merci pour ton aide

Bonjour,

Ceci ...

If (Cell.Value <> "") And (Cell.Offset(, 1).Value <> "") Then
If (Cell.Offset(, 1).Value <> "") And (Cell.Offset(, 2).Value <> "") Then

est la même chose que ceci ...

If (Cell.Value <> "") And (Cell.Offset(, 1).Value <> "") And (Cell.Offset(, 2).Value <> "") Then

Puis qu'il y a répétition de ...

(Cell.Offset(, 1).Value <> "")

Il faut donc pour une personne ... sur une matière que les 3 cases soient remplies.

Sinon, il faut changer les conditions.

Quelles conditions d'affichage sont souhaitées ?

ric

Ric,

Me revoilà après plusieurs essais. Suite à ce que vous m'avez dit effectivement il y a des 0 qui s’affiche dans les colonnes CM1 à CM200.

Je n'ai pas réussi à changer la macro pour que ces colonnes restent vides. En effet les CM1 à CM200 font l'objet d'une macro appelé "Sub PositifBis()" et a pour objectif de multiplier un chiffre que je rentre par un coefficient de 1.5h.

Il est peut être à ce niveau le problème.

Les conditions pour remplir le tableau de la page 2 automatique sont :

- choisir l'enseignant en cellule "C2" de la page 2 et à partir de ce choix toutes les informations le concernant qui se trouvent dans la feuille intitulée "BD" doit se copier automatiquement dans le tableau de la page 2 et en prenant en compte uniquement les lignes remplies de la feuille" BD".

Je vous renvoi un fichier demo pour une meilleure visibilité.

Je pense que le problème vient du code

'On calcule l'index de la colonne Intervenant

NumCM = Int((CellFind.Column - .ListColumns("TD").Index + 2) / 3)

La macro ne fonctionne absolument plus. Si vous avez une solution

merci beaucoup

Prya

Bonjour,

Je regarde ce que je peux faire.

ric

Bonjour,

Dans la feuille BD ... tu peux effacer les 0 qui ne t'intéressent pas.

Puis remplace tes conditions par ...

 If (Cell.Value <> "") Or (Cell.Offset(, 1).Value <> "") Or (Cell.Offset(, 2).Value <> "") Then

Ainsi, dès qu'il y a un résultat sur une matière pour la personne sélectionnée, les résultats existants sont écrits dans la feuille page2.

Or = l'un ou l'autre.

Espérant que ce soit le résultat souhaité.

ric

Merci beaucoup Ric ,

Je ne sais pas si c'est le nouveau code que vous m'avez proposé qui m'a permis de supprimer les 0. Avant l'envoi de mon dernier mail j'avais essayé à plusieurs reprises de les supprimer mais sans succès ils se remettaient par défaut.

Votre proposition de code fonctionne bien mais le copier-coller dans le tableau ne respecte pas les colonnes CM - TD et PA, Le CM ou le TD se copie 2 fois et la colonne PA n'est pas prise en compte du tout.

Et pour finaliser ce projet est-il possible que chaque fois que je choisi un enseignant en cellule "C2" de la page 2 les informations le concernant se mettent à jour automatique sans je lance la macro d'une manière automatique.

merci encore

Prya

Bonjour,

Je regarde cela ...

ric

Bonjour,

Voici ...

Dès le changement de personne dans la cellule C2 ... le code s'exécute.

J'ai aussi corrigé le report des données CM, TD et PA dans les bonnes colonnes.

ric

Excellent Ric !

Tout fonctionne correctement.

J'avais tout faut, les problèmes se situaient bien ailleurs que ce que je pensais.

Merci pour tout

Prya

ric

Bonjour Ric,

Je viens de découvrir un petit souci sur la macro. Chaque fois que j’ajoute des lignes les 0 se mettent par défaut. J'ai réussi à les supprimer par le biais de fichier - option - option avancée en sélectionnant au préalable tout le tableau mais ces lignes vides sont prises en compte dans la page 2.

Vous est-il possible s'il vous plaît de me dire à quoi cela est dû ?

Je vous en remercie par avance

Prya

Bonjour,

Fichier - Options - Option avancées > descend jusqu'à "Options d'affichage de la feuille de calcul" > il y a le nom de la feuille sélectionnée > décoche "Afficher un zéro dans les cellules qui ont une valeur nulle"

Est-ce que cela conviendra ? Ou je n'ai pas bien saisi ton propos ?

ric

oui c'est bien ce que j'ai fait comme manipulation, du coup les 0 ont disparu mais quand je choisi un enseignant en page 2 les informations le concernant se copient bien mais prennent également les lignes vides.

Je vais tester encore

Merci

Prya

Bonjour,

Effectivement, il y a des 0 à quelques quelques endroits (993) > lesquels sont masqués en masquant les 0 non significatifs.

À tester > sur la feuille "BD" > CTRL+H >

Zone "Rechercher" ... on met 0

Zone Remplacer par ... on ne met rien.

Dans = Feuille

Recherche = par ligne ou par colonne > ici ça n'a pas d'importance.

Regarder dans = Formules

Bouton remplacer tout

Tester si des 0 reviennent en ajoutant des lignes

ric

Les zéro ne reviennent plus.

Le souci est situé sur les trois premiers enseignants, les lignes non remplies de la feuille "BD" se copient quand même sur la page 2. On voit les codes suivis de leur intitulé avec aucune charge d’enseignement ce qui est normal car je n'ai rien saisi dans la feuille BD. Cela se produit uniquement sur ces 3 premiers enseignants.

Merci

Bonjour,

Je joins le fichier exemple ... est-ce que le cas se produit avec ce fichier.

Pour ma part, il semble que non.

ric

effectivement, le souci vient d'un autre fichier. Je vais tester avec le vôtre.

Merci

Prya

Bonjour,

Si le fichier problématique n'est pas trop gros, tu peux me le passer en message privé pour assurer un peu de confidentialité du contenu.

Je le regarderai.

ric

Rechercher des sujets similaires à "vba remplissage automatique tableau"