Copie automatique lignes sur autre feuille VBA

valentin.f41

XLDnaute Nouveau
Bonjour à tous ! Je suis nouveau sur ce forum et j'ai un petit souci d'automatisation sur Excel (Mac).

J'ai un fichier dans lequel j'ai une feuille ("PROSPECTS") contenant plusieurs lignes.
J'aimerais, lorsque je passe une ligne de cette feuille en couleur bleue, qu'elle se copie automatiquement sur la feuille ("BLEUS").
L'objectif étant que si je repasse cette ligne dans une autre couleur dans la feuille "PROSPECTS", qu'elle s'efface automatiquement de la feuille "BLEUS".
Cela me servirait à créer une sorte de tableau de bord répertoriant toutes mes lignes bleues dans une seule feuille.

Voici le fichier en question.

Merci beaucoup !
 

Pièces jointes

  • CLASSEUR SOC.xlsx
    13.2 KB · Affichages: 65

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour valentin.f41 et bienvenue sur XLD :),

Deux petites remarques perso :

1) un changement de couleur ne déclenchant aucun évènement au sein d'Excel (du moins sur ma version PC), un changement de couleur n'est pas approprié pour réaliser une action (mieux vaut utiliser une colonne particulière avec une action souris qui sera détectable)

2) il vaudrait mieux avoir une clef unique pour chaque ligne de la source qui permettrait de repérer un enregistrement à coup sûr( que l'enregistrement soit sur la feuille ou dupliqué sur la seconde feuille)
 
Dernière édition:

valentin.f41

XLDnaute Nouveau
Bonjour valentin.f41 et bienvenue sur XLD :),

Deux petites remarques :

1) un changement de couleur ne déclenchant aucun évènement au sein d'Excel (du moins sur ma version PC), un changement de couleur n'est pas approprié pour réaliser une action (mieux vaut utiliser une colonne particulière avec une action souris qui sera détectable)

2) il vaudrait mieux avoir une clef unique pour chaque ligne de la source qui permettrait de repérer un enregistrement à coup sûr( que l'enregistrement soit sur la feuille ou dupliqué sur la seconde feuille)

C'est vrai que je suis un peu novice... j'ai choisi la couleur bleue pour désigner une catégorie spécifique. Par exemple, toutes les lignes bleues signifient "Contacté". Mon but est de pouvoir regrouper toutes les lignes bleues dans une autre feuille qui se mettrait automatiquement à jour. Je ne sais pas trop comment m'y prendre...
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Un essai dans le fichier joint avec VBA et une MFC.

Double-cliquer sur une cellule de la colonne A du tableau, fait alterner la couleur de la ligne entre le bleu et la couleur d'origine de la ligne. Ceci par le biais d'une MFC sur l'ensemble du tableau.

Le transfert des lignes en bleu (plus exactement avec un x en colonne A) se produit quand on sélectionne la feuille BLEUS.

Les codes sont dans les modules de code de chacune des deux feuilles.
 

Pièces jointes

  • valentin.f41- classeur soc- v1.xlsm
    19.6 KB · Affichages: 83
Dernière édition:

valentin.f41

XLDnaute Nouveau
Re,

Un essai dans le fichier joint avec VBA et une MFC.

Double-cliquer sur une cellule de la colonne A du tableau, fait alterner la couleur de la ligne entre le bleu et la couleur d'origine de la ligne. Ceci par le biais d'une MFC sur l'ensemble du tableau.

Le transfert des lignes en bleu (plus exactement avec un x en colonne A) se produit quand on sélectionne la feuille PROSPECTS.

Les codes sont dans les modules de code de chacune des deux feuilles.

Bonjour @mapomme,
Merci beaucoup, je regarde le fichier !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir valentin.f41,
pourriez-vous me dire comment je dois modifier le code VBA dans le cas où j'aurais plusieurs feuilles de type PROSPECTS afin de transférer automatiquement les lignes bleues de ces autres feuilles vers la feuille "BLEUS" ?

Le fichier joint a été modifié pour répondre à votre demande.
Les codes se trouvent dans les modules de code de la feuille "BLEUS", de Module1 et de ThisWorkbook.

Dans le code de Module1, se trouve une constante publique nommée Fproj.
  • Cette constante doit être modifiée par vous-même
  • Elle doit contenir les noms des onglets "projet" séparés par un point-virgule
N'oubliez pas d'appliquer la MFC sur chaque feuille "projet" !
 

Pièces jointes

  • valentin.f41- classeur soc- v2.xlsm
    27.6 KB · Affichages: 61

valentin.f41

XLDnaute Nouveau
Bonsoir valentin.f41,


Le fichier joint a été modifié pour répondre à votre demande.
Les codes se trouvent dans les modules de code de la feuille "BLEUS", de Module1 et de ThisWorkbook.

Dans le code de Module1, se trouve une constante publique nommée Fproj.
  • Cette constante doit être modifiée par vous-même
  • Elle doit contenir les noms des onglets "projet" séparés par un point-virgule
N'oubliez pas d'appliquer la MFC sur chaque feuille "projet" !

Super @mapomme !

Un grand merci. Tout est clair ! Une dernière question ce devrait être bon ensuite.
Si je souhaite que la largeur et la hauteur des cellules copiées dans "BLEUS" soient identiques à celles des autres feuilles, dois-je remplacer "Autofit" dans les modules de "BLEUS" par quelque chose d'autre ?

Merci :)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour valentin.f41
Une dernière question ce devrait être bon ensuite.
Si je souhaite que la largeur et la hauteur des cellules copiées dans "BLEUS" soient identiques à celles des autres feuilles, dois-je remplacer "Autofit" dans les modules de "BLEUS" par quelque chose d'autre ?

Pas tout à fait, à la place de l'autofit, il faut copier les largeurs des colonnes d'une feuille de type Prospect vers la feuille BLEUS. C'est ce que font les deux instructions rajoutées suivantes :
VB:
.Range("A1:O1").Copy: Range("A1:O1").PasteSpecial xlPasteColumnWidths
 

Pièces jointes

  • valentin.f41- classeur soc- v2a.xlsm
    27.6 KB · Affichages: 53

valentin.f41

XLDnaute Nouveau
Bonjour valentin.f41


Pas tout à fait, à la place de l'autofit, il faut copier les largeurs des colonnes d'une feuille de type Prospect vers la feuille BLEUS. C'est ce que font les deux instructions rajoutées suivantes :
VB:
.Range("A1:O1").Copy: Range("A1:O1").PasteSpecial xlPasteColumnWidths

Merci @mapomme, j'ai bien tout intégré et tout fonctionne bien.
Est-ce possible que je rajoute une variable en plus du "x" ?
Par exemple, ajouter une variable "v" qui me copierait toutes les lignes contenant "v" dans une autre feuille vierge ?
J'aimerait avoir mes lignes bleues copiées dans la feuille "BLEUS" et mes lignes vertes (contenant "v") copiées dans une autre feuille ("VERTS" par exemple).
Dites-moi si j'en demande trop, je ne connais pas du tout les codes à ajouter...
Merci :)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir valentin.f41,

Est-ce possible que je rajoute une variable en plus du "x" ?
Par exemple, ajouter une variable "v" qui me copierait toutes les lignes contenant "v" dans une autre feuille vierge ?
J'aimerait avoir mes lignes bleues copiées dans la feuille "BLEUS" et mes lignes vertes (contenant "v") copiées dans une autre feuille ("VERTS" par exemple).

Une version v3 qui devrait répondre à votre demande.

Les codes de chaque feuille couleur sont identiques à la déclaration de la constante maValeur près.
Cette constante est égale à la lettre de la colonne A des feuilles PROJET dont les lignes doivent être copiées sur la feuille couleur en question.

Sur la feuille Data figurent la liste des codes Etat pour la liste de validation.

Pour rajouter un état :
  • ajouter une feuille couleur vierge
  • changer le nom de la feuille par le nom de sa couleur (par ex. VIOLETS)
  • sur la feuille Data, rajouter la lettre correspondante à la liste de la colonne A (par ex. v)
  • sur la première feuille Projet, sélectionner le tableau (ligne 2 à 500, colonne A à N)
  • ajouter la MFC pour l'état v
  • puis copier le tableau (ligne 2 à 500, colonne A à N) pour le coller en format seulement sur les autres feuilles projets
  • copier l'ensemble du code d'une feuille couleur déjà existante
  • et coller ce code dans le module de code de la feuille VIOLETS
  • puis dans ce code, modifier la valeur de la constante maValeur pour y placer la lettre v
 

Pièces jointes

  • valentin.f41- classeur soc- v3.xlsm
    94.7 KB · Affichages: 62
Dernière édition:

valentin.f41

XLDnaute Nouveau
@mapomme,
Merci infiniment ! Je vais regarder tout cela.
Très bonne soirée,
Valentin
Bonsoir valentin.f41,



Une version v3 qui devrait répondre à votre demande.

Les codes de chaque feuille couleur sont identiques à la déclaration de la constante maValeur près.
Cette constante est égale à la lettre de la colonne A des feuilles PROJET dont les lignes doivent être copiées sur la feuille couleur en question.

Sur la feuille Data figurent la liste des codes Etat pour la liste de validation.

Pour rajouter un état :
  • ajouter une feuille couleur vierge
  • changer le nom de la feuille par le nom de sa couleur (par ex. VIOLETS)
  • sur la feuille Data, rajouter la lettre correspondante à la liste de la colonne A (par ex. v)
  • sur la première feuille Projet, sélectionner le tableau (ligne 2 à 500, colonne A à N)
  • ajouter la MFC pour l'état v
  • puis copier le tableau (ligne 2 à 500, colonne A à N) pour le coller en format seulement sur les autres feuilles projets
  • copier l'ensemble du code d'une feuille couleur déjà existante
  • et coller ce code dans le module de code de la feuille VIOLETS
  • puis dans ce code, modifier la valeur de la constante maValeur pour y placer la lettre v

@mapomme,
Merci pour votre aide. J'ai tout bien mis à jour et cela fonctionne parfaitement.
Que dois-je ajouter à "PasteSpecial xlPasteColumnWidths" si je souhaite également copier la hauteur des lignes ?
Bonne journée,
Valentin
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87