Créer nouvelle feuile si...

kettani101

XLDnaute Nouveau
Bonjour tout le monde,

Je cherche à faire une manip très particulière sur excel 2003 et malheureusement je n'y arrive pas. Je v essayer d'expliquer clairement ma requête:

J'ai une feuille qui s'appelle V1 et qui comprend un ensemble de données.
J'ai une autre feuille qui s'appelle Modif où au fil du temps je v lister des modifs à apporter à V1:
Colonne A je mets la ligne que je ve modifier (coordonnée X)
Colonne B je mets la colonne que je ve modifier (coordonnée Y)
Colonne C je mets le nouvel élément qui doit remplacer celui qui se trouve aux coordonnées (X,Y)
Colonne D représente la version sur laquelle je souhaite apporter la modif (explication ci-dessous)

Le probléme c que je ne dois jamais toucher à V1 et si je dois effectuer une modif, en rentrant mes éléments sur la feuille Modif, il faut que automatiquement une nouvelle feuille se crée, identique à V1 mais avec la modif souhaitée (cette feuille deviendra donc V2 par exemple, sachant que dans la colonne D (feuille Modif), j'avais l'élément V2 qui était indiqué). Par contre, si une nouvelle modif apparait (nouvelle ligne dans la feuille Modif avec des coordonées indiquées et une version) et qu'elle concerne une version déjà existante, il faut que celle ci ne fasse que mettre à jour la version existante.

Ai-je été claire? je suis vraiment dans une m**** et toute aide qui pourra m'être apportée me sera très utile. Merci beaucoup en tous cas pour toute personne qui veut bien réfléchir à cette question, j'attend impatiemment vos réponses.

Très sincérement, MERCI.
 

mromain

XLDnaute Barbatruc
Re : Créer nouvelle feuile si...

bonjour kettani101, keepcool183

voici une solution.
Code:
Public Sub PropagerModifs()
Dim i As Long
With ThisWorkbook.Sheets("Modif")
    For i = .Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1
        GetSheet(.Range("D" & i)).Cells(.Range("A" & i), .Range("B" & i)) = .Range("C" & i)
    Next i
End With
End Sub



Private Function GetSheet(sheetName As String) As Worksheet
With ThisWorkbook
    If SheetExist(sheetName) Then Set GetSheet = .Sheets(sheetName): Exit Function
    .Sheets("V1").Copy after:=.Sheets(.Sheets.Count)
    Set GetSheet = .Sheets(.Sheets.Count)
    GetSheet.Name = sheetName
End With
End Function

Private Function SheetExist(sheetName As String) As Boolean
SheetExist = False
Dim curSheet As Worksheet
For Each curSheet In ThisWorkbook.Sheets
    If curSheet.Name = sheetName Then SheetExist = True
Next curSheet
End Function
a+
 

Pièces jointes

  • Classeur1.xls
    45.5 KB · Affichages: 75
  • Classeur1.xls
    45.5 KB · Affichages: 69
  • Classeur1.xls
    45.5 KB · Affichages: 78

kettani101

XLDnaute Nouveau
Re : Créer nouvelle feuile si...

Géniaaaaaaaaaale le fichier, merci beaucoup. Je jette un coup d'oeil et je reviens vers vous pour confimer que tout fonctionne.
Un ENORME merci en tous cas, c'est vraiment très gentil de votre part d'avoir bien voulu m'aider, et un MERCI spéciale à MROMAIN pour la solution.
 

kettani101

XLDnaute Nouveau
Re : Créer nouvelle feuile si...

Merci beaucoup mromain, ça répond quasiment à ma demande, une seule petite modification serait nécessaire, mais je ne sais malheuresment pas comment l'apporter.

Kan une version V3 est demandée par exemple, sur ton fichier seul les éléments où V3 est notifiée évolue par rapport à V1. Hors, dans V3, il faudrait que les éléments qui ont évolués dans V2 soient eux aussi inclus, en plus des éléments de V3.

Puis-je me pemettre de te demander s'il tu penses possible d'apporter cette modification?

En tous cas, merci pour tout
 

mromain

XLDnaute Barbatruc
Re : Créer nouvelle feuile si...

re,

voici un fichier à tester.

a+


edit: bien que lors de la saisie des modifs, l'ordre des version n'a pas d'importance, l'ordre de propagation des modifs suivra lui l'ordre des version... :)eek: pas très net).

en gros, dans ta feuille de modifs tu as
1 1 titi V2
1 2 toto V3
1 2 titi V2

tu te retrouvera avec
V2: titi en A1, titi en B1
V3: titi en A1, toto en B1

a+
 

Pièces jointes

  • Classeur1.zip
    16.9 KB · Affichages: 42
  • Classeur1.zip
    16.9 KB · Affichages: 41
  • Classeur1.zip
    16.9 KB · Affichages: 49
Dernière édition:

kettani101

XLDnaute Nouveau
Re : Créer nouvelle feuile si...

Extra. C vraiment géniale mromain, ça répond exactement à mes attentes.

Merci beaucoup, beaucoup, beaucoup pour ton aide, j'espère avoir l'occasion de t'aider à mon tour.

Bonne continuation, je reviendrais vers toi pour te donner des news et te dire comment les choses avancent.

Ciao
 

Discussions similaires

Statistiques des forums

Discussions
312 497
Messages
2 088 994
Membres
104 000
dernier inscrit
dinelcia