Création d'une nouvelle feuille automatique quand valeur "X" dans une cellule

ronanm

XLDnaute Nouveau
Bonjour experts d'excel,

Après moulte recherche dans mes connaissances de base, seule une aide pourra m'aider !
Voici la situation :

J'ai un tableau comportant une liste de données [colonne A] et deux autre colonnes : "A améliorer" [colonne B] et "non-conforme" [colonne C] renseignée d'un "X" si nécessaire.

Exemple :
[A]...................................[C]..................[D]
Données....A améliorer..........Non-corforme.......Fiche N°
aaaaa.............X...............................................1
bbbbb.............X...............................................2
ccccc........................................X....................3
ddddd

Je souhaiterais ainsi qu'une nouvelle feuille soit créee lorsqu'un "X" est inscrit en B ou en C. Avec plusieurs conditions :
- la feuille crée copiera un modèle de base (qui sera en feuille caché dans le classeur)
- eventuellement demander une validation de création de feuille en cas d'erreur.
- copie du texte de la colonne A correspondant sur la nouvelle feuille ainsi que la données "a améliorer" ou "non-conforme" correspondant.
- incrémenté le numéro de la fiche a chaque nouvelle création

Le mode suprème serait également de pouvoir faire l'effet inverse, c'est à dire lorsque le X de la colonne B ou C est effacé, la feuille correspondante le soit également et que automatiquemt les numéros des autres fiches reprennent à 1 !

[alternative possible : juste créer une fiche (a partir d'un modèle) quand un "X" est inscrit en copiant le texte de la colonne A et la valeur "a améliorer" ou "non conforme correspondant]]

Ouaa, je me rend compte de ce que je demande !!

Merci beaucoup d'avance !!

Cordialement, R.
 

JNP

XLDnaute Barbatruc
Re : Création d'une nouvelle feuille automatique quand valeur "X" dans une cellule

Bonjour Ronanm et bienvenue :),
Après moulte recherche dans mes connaissances de base, seule une aide pourra m'aider !
...
Ouaa, je me rend compte de ce que je demande !!
Aide-toi et le ciel t'aidera :p...
Nous ne sommes pas dans un supermarché, je te conseille moultes recherches dans les connaissances du forum, elle seront peut-être plus étendues :rolleyes:...

Toutefois, quelques pistes :
L'événement
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
te permettra de détecter la saisie d'un X, et
Code:
Target.Row
Target.Column
te permettront respectivement de connaître la ligne et la colonne où le X a été saisi.
Code:
Sheets("Feuil1").Copy Before:=Sheets(3)
te permettra, par exemple, de copier la feuille1 avant la feuille 3 et
Code:
Delete
de la détruire :p...
Voilà, tu as presque toutes les instructions pour commencer le travail :rolleyes:...
Bon retroussage de manches :cool:
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Création d'une nouvelle feuille automatique quand valeur "X" dans une cellule

Bonsoir Ronanm, Jean-Noël, bonsoir le forum,

Je partage l'avis de Jean-Noël, Aide-toi et le ciel t'aidera... Toutefois, comme ton projet me parait intéressant, je pourrais y jeter un œil si tu daignais mettre en pièce jointe un fichier respectant la structure de ton fichier original. Avec l'onglet modèle, le tableau contenant une poignée de données non confidentielles, etc... Je reste attentif à ton fil.
 

ROGER2327

XLDnaute Barbatruc
Re : Création d'une nouvelle feuille automatique quand valeur "X" dans une cellule

Bonjour à tous
Mêmes remarques que mes petits camarades.
Le projet me parait réalisable. J'y regarderai dès qu'un support sera fourni, pour avoir du grain à moudre.

Je suis trop feignant pour me taper la fabrication du support.
Et même si je ne l'étais pas (trop feignant), le support
que je fabriquerais serait probablement non conforme
au modèle souhaité…
ROGER2327
#5148


Mercredi 4 Clinamen 138 (Saint Pagne, confident, SQ)
6 Germinal An CCXIX
2011-W12-6T00:06:28Z
 

ronanm

XLDnaute Nouveau
Re : Création d'une nouvelle feuille automatique quand valeur "X" dans une cellule

Bonjour à tous,

@JNP, je ne saurais vous considérer comme un supermarché, bien évidemment, et merci pour vos premiers éléments. Je m'efforce de chercher sur les forums mais, et d'ou ma première fois sur celui-ci, manier les lignes de codes sans aucunes connaissances n'est pas évident.

Habituellement, j'utilise, en bidouillant, des macros que j'enregistre mais quand cela devient plus technique, je me trouve confronté aux limites de cette méthode.

@ ROGER2327 et Robert, Novice également sur ce forum, je n'ai pas eu la spontanéité de vous proposez un fichier. Ceci étant, merci également pour votre temps et voici un extrait de mon fichier.


Bien Cordialement,

Ronanm
 

Pièces jointes

  • Fichier audit.xls
    27 KB · Affichages: 196

ronanm

XLDnaute Nouveau
Re : Création d'une nouvelle feuille automatique quand valeur "X" dans une cellule

Re, :)

Voici un fichier avec des nouveautés, enfin, des macros pour créer des fiches !
Deux fiches types : en jaune pour les données "A améliorer" et en rouge pour les données "non-conforme"

Bon de là, il me faudrait les inclure dans toutes les conditions mais je rameeeee ! :eek:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
Je me lance dans la recherche de "X"(en colonne D et E de mon doc) mais ensuite je ne sais pas comment renvoyer à une donnée correspondante (le n° de fiche en colonne B)
:confused:

J'ai bidouillé pour avoir une incrémentation du numéro de fiche mais je ne sais pas si cela peut etre utile ? (En colonne B)

Bonne soirée. see ya
 

Pièces jointes

  • Fichier audit 2.xls
    54 KB · Affichages: 196

Robert

XLDnaute Barbatruc
Repose en paix
Re : Création d'une nouvelle feuille automatique quand valeur "X" dans une cellule

Bonsoir le fil, bonsoir le forum,

Une première piste car je n'ai pas compris ce que tu volulais récupérer exactement... la macro ci-dessous fait les choses suivantes :
• Création d'une fiche incrémentée
• pour chaque cellule marqué "x" correspondante à la trame, copie la valeur de la colonne A et la colle dans B9.

Évidement, comme B9 est fusionnée il n'y aura que la dernière valeur ! Mais j'attends de mieux comprendre ce que tu veux récupérer comme données pour modifier la macro. Je n'ai pas compris pourquoi tu mettais un numéro de fiche dans le tabelau Feuille Audit puisque qu'après le bouton créait une fiche incrémenté...

la macro :
Code:
Sub copietrameAA()
Dim dg As Byte 'déclare la variable dg (nombre de DiGits du numéro de fiche)
Dim num As Integer 'déclare la variable num (NUMéro de fiche)
Dim s As Worksheet 'déclare la variable s (onglet Source)
Dim c As Worksheet 'déclare la variable c (onglet Cible)
Dim pls As Range 'déclare la variable pls (PLage de l'onglet Source)
Dim cel As Range 'déclare la variable cel (CELlule)
 
'***************************************************
'copy du modèle et incrémentation du numéro de Fiche
'***************************************************
Set s = Sheets("Feuille Audit") 'définit la variable S (l'onglet Source)
With Sheets("Trame AA") 'prend en compte l'onglet "Trame AA"
    .Visible = True 'affiche l'onglet
    .Copy After:=Sheets(Sheets.Count) 'copy l'onglet en dernier
    ActiveSheet.Name = Range("B7").Value 'nomme l'onglet (au départ il se nomme "Fiche de Constat N° 1"
    Set c = ActiveSheet 'définit la variable c (l'onglet Cible)
    dg = Len(Split(.Range("B7").Value, " ", -1)(4)) 'extrait le nombre de digits du numéro de fiche
    num = CInt(Right(.Range("B7"), dg)) 'définit le numéro de fiche
    'incrément le numéro de fiche dans la l'onglet modèle "Trame AA"
    .Range("B7").Value = Left(.Range("B7").Value, Len(.Range("B7").Value) - dg) & num + 1
    .Visible = False 'masque l'onglet modèle "Trame AA"
End With 'fin de la prise en compte de l'onglet "Trame AA"
 
'******************************************************
'Récupération de la colonne A des cellules marquées "x"
'******************************************************
Set pls = s.Range("D9:D" & s.Range("D65536").End(xlUp).Row) 'définit la plage pls
For Each cel In pls 'boucle sur toutes les cellules cel de la plage pls
    If cel.Value = "x" Or cel.Value = "X" Then'condition : si la cellule contient "x" ou "X"
        cel.Offset(0, -3).copie c.Range("B9") 'copie la valeur de la colonne A de cel et la colle dans B9
    End If 'fin de la condition
Next cel 'prochaine cellule cel de la boucle
End Sub
 

ronanm

XLDnaute Nouveau
Re : Création d'une nouvelle feuille automatique quand valeur "X" dans une cellule

Merci pour ce premier élément de réponse. J'ai cependant tester la macro et elle bloque à ce niveau :

Code:
  dg = Len(Split(.Range("B7").Value, " ", -1)(4)) 'extrait le nombre de digits du numéro de fiche

J'ai essayer toujours sur cette base de changer B7 par F7 (seulement le numéro de la fiche) mais non plus.
Il me dit 'erreur d'exécution 1004'... impossible de renommer ...'
ou
'erreur d'exécution 9', l'indice n'appartient pas à la sélection'

Bonsoir le fil, bonsoir le forum,

Une première piste car je n'ai pas compris ce que tu volulais récupérer exactement... la macro ci-dessous fait les choses suivantes :
• Création d'une fiche incrémentée
• pour chaque cellule marqué "x" correspondante à la trame, copie la valeur de la colonne A et la colle dans B9.

Évidement, comme B9 est fusionnée il n'y aura que la dernière valeur ! Mais j'attends de mieux comprendre ce que tu veux récupérer comme données pour modifier la macro. Je n'ai pas compris pourquoi tu mettais un numéro de fiche dans le tabelau Feuille Audit puisque qu'après le bouton créait une fiche incrémenté...


En soit, j'ai pris le temps de travailler sur le document de base, la version contient plusieurs nouvelles choses qui éclaircissent un peu le sujet. (Bon c'est de la bidouille, j'en convient). Sinon pour répondre à ta question, j'ai besoin du numéro dans 'feuille audit' car cela sert de synthèse.

En soit, je vais essayer de coller ce que tu me proposes (j'apprends en sur le tas) dans le nouvelle version ci-dessous que j'ai potassé.

Regarde la pièce jointe Fichier audit 3.xls

Voila comment il se résume :
* Si il y a un "X" dans K ou L --> Message box s'ouvre pour demander création d'un fiche
- si "NON" = rien ne se passe
- Si "OUI" = Création d'une fiche (si en K : fiche "Trame AA" en en L : "TrameNC")
(pour ce faire, cela exécute une macro enregistrée)
* La fiche est créée, il faut entrer "manuellement" le numéro de la fiche et il va chercher les informations compillées en colonne D (masquée et bidouillée) de la 'feuille audit' pour les collées en B8 dans la fiche en question. (fonction rechercheV)
* Les feuilles sont copiés en dernière position à chaque fois.
* Les fiches crées se renomme automatiquement en fonction de la valeur en 'F7'

Les manquants :
* Pas d'incrémentation automatique (en soit il suffit peut etre de prendre la valeur associé au "X" correspondant du tableau 'feuille audit')
exemple : si "X" en K, le numéro de fiche en I se met automatiquement et il suffirait de lui dire de prendre cette valeur en référence pour créer une nouvelle fiche
* Demande de créer une fiche même si on supprime un "X"
* Ne demande pas de supprimer la fiche qui n'est plus concernée par un "X"
(et de cela, réorganiser le numéro des autres fiches, exemple, si la fiche n°2 est supprimer, la 3 devient 2, la 4 devient 3 ...)
(c'est un peu compliqué, ce document sert à faire des rapports annuels qui tendent à etre modifiés, certaines fiches rapports seront d'actualité et d'autres non. l'autre solution étant donc de chaque année le reprendre à zéro simplifiant ainsi la tache)

Le voyant de mon point de vue, j'espère vous avoir exposé clairement le sujet. A defaut, je reviendrais sur les points manquant de précisions

Merci beaucoup
 

Pièces jointes

  • Fichier audit 3.xls
    83.5 KB · Affichages: 115
  • Fichier audit 3.xls
    83.5 KB · Affichages: 114

Robert

XLDnaute Barbatruc
Repose en paix
Re : Création d'une nouvelle feuille automatique quand valeur "X" dans une cellule

Bonjour le fil, bonjour le forum,

Oui en effet ça plante puisque j'ai modifié chez moi la Cellule B7 de l'onglet caché Trame AA. Remplace en B7 : Fiche de Constat N° par Fiche de Constat N° 1 et ça marchera... Pour le reste je jette un œil dès que j'ai le temps...
 

ronanm

XLDnaute Nouveau
Re : Création d'une nouvelle feuille automatique quand valeur "X" dans une cellule

Ok ça marche effectivement !

Code:
ActiveSheet.Name = Range("F7").Value 'nomme l'onglet (au départ il se nomme "Fiche de Constat N° 1"
    Set c = ActiveSheet 'définit la variable c (l'onglet Cible)
    dg = Len(Split(.Range("F7").Value, " ", -1)(4)) 'extrait le nombre de digits du numéro de fiche
    num = CInt(Right(.Range("F7"), dg)) 'définit le numéro de fiche
    'incrément le numéro de fiche dans la l'onglet modèle "Trame AA"
    .Range("F7").Value = Left(.Range("F7").Value, Len(.Range("F7").Value) - dg) & num + 1

J'ai essayé (en pensant que cela pouvait suffir) de changer B7 (Fiche constat N° X) par F7 pour n'avoir que le numéro (et raccourcir ainsi la taille des onglets et permettre ma bidouille "rechercheV" d'ensuite ... ) mais cela n'a évidemment pas fonctionné !!

Merci

A bientot
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 168
Messages
2 085 906
Membres
103 028
dernier inscrit
MLAGHITI