GNT sans publicité, site mobile, fonctionnalitées exclusives...

maj une feuille a partir d'un autre dans un meme classeur

Le
bastientot
Bonjour,

je cherche a mettre a jour une feuille excel ( périmetre ) a partir
d'une autre feuille ( MAJ ) avec une macro, voici les info sur les
feuilles :

soir une feuille ( périmètre ) avec des informations avec en
colonne :
A 1 ou vide ( 1 su le pcest actif vide si inactif )
B un nom de PC
C l'os ( wintel as400 VMS UNIX\LINUX
D une catégorie A B C
E une autre catégorie P M G TG
F un libéllé
G un code type xxx x-y-z
H mois de l'entree modif ou suppression

dans une autre feuille MAJ en colonne
A le type de maj A ( ajout ) M ( modiifcation ) S ( suppresion )
B un nom de PC
C l'os ( wintel as400 VMS UNIX\LINUX
D une catégorie A B C
E une autre catégorie P M G TG
F un libéllé
G un code type xxx x-y-z
H mois de l'entree modif ou suppression

VOici les cas a traiter :

1 l'ajout.
- verifier si le nom du PC existe s'il existe dans la feuille
( périmètre ) et s'il ya un 1 en colonne A alors mettre le fond de la
ligne en Rouge dans la feuille ( MAJ ) s'il existe mais sans le 1 en
colonne A mettre un 1 en A et mettre ajour les cellules
correspondantes s"il n'existe pas je voudrais faire une insertion
dans le fichier d'une ligne et je copie les informations de la feuille
( MAJ) dans les colonnes correspondantes et ajouter un 1 en colonne A
et un A en H.

2 la suppression.
- verifier que le nom du PC existe s'il existe et s'il y a un 1 en A
mettre le "texte" de la ligne en rouge et suppression du 1 de la
colonne A et ajout de la lettre S dans la colone H de la feuille
périmètre s'il n'existe pas mettre le fond des cellules en rouge dans
la feuille ( MAJ ).

3 la modification.
- verifer que le nom du PC existe dans la feuille ( périmètre ) et
qu'il y est un 1 en A dans ce cas mettre a jour les informations
différentes et emttre un M en H sinon mettre le fond des cellules de
la feuille ( MAJ ) en rouge s'il n'y a pas de 1 en A de la feuille
périmètre ou si le serveur n'exite pas ..

pour chaque modif dans la feuille périmètre mettre en colonne I la
donnée de la colonne H de MAJ

Merci d'avance de votre aide.

exemple de fichier :
http://cjoint.com/data/comn3wYZnV.htm
Lire les 11 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #18651361
Salut à toi

Beaucoup de mal à te suivre !!!!!
Des informations sont contradictoires
Pour les mêmes conditions en colonne H dans un cas (Suppression) il faut un
"S" dans un autre cas (Modification) il faut un "M"

Pour les conditions :

verifier que le nom du PC existe s'il existe et s'il y a un 1 en A

Cas suppression :
ajout de la lettre S dans la colone H
Cas Modification
mettre un M en H

S ou M ?????


Dans un code pour les mêmes conditions les instructions au résultats
différents seront éxécutées
Seul le dernier sera maintenu

Il en est de même pour la couleur de l'Onglet "MAJ"

Pour les conditions :
Cas Ajout verifier si le nom du PC existe s'il existe dans la feuille
( périmètre ) et s'il ya un 1 en colonne A

Cas Modification verifer que le nom du PC existe dans la feuille ( périmètre
) et
qu'il y est un 1 en A
les conséquences
sinon

La conséquence pour les 2 cas:

mettre le fond de la
ligne en Rouge dans la feuille ( MAJ ) s'il existe mais sans le 1 en
colonne A

Dur dur !!!!!!

A moins que chaque cas ai son propre code
Dans cette hypothèse ce n'est pas une macro globale mais autant de macros
que de cas qu'il faut

Tu voubras bien apporter des précisions

Merci
bastientot
Le #18651891
c'est vrai que c'est un peu compliqué donc

dans le cas de la suppresiion je dois verifier que le pc est dans la
feuille périmètre s'il y est je dois verifier qu'il est un 1 en A si
ces 2 conditions sont vrai alors je supprime le 1 je mets un S en H et
je met le texte de la ligne en rouge dans les autres cas je mets le
fond en rouge dans la feuille MAJ.

dans le cas d'une modification je dois verifier que le nom du pc est
present avec un 1 en A dans ce cas je fais la maj et je mets un M en H
sinon j'affiche le fond en rouge dans MAJ.

le plus compliqué l'ajout

je verifie que le nom du pc n'existe pas dans ce cas j'ajoute une
ligne avec toutes les infos. dans le cas ou le nom du pc existe et
qu'il n'y est pas de 1 en A j'ajoute un 1 en A et je fais la maj et
j'ajoute un A en H "et le texte dans la feuille périmètre en rouge si
possible ". Dans le cas ou le nom du pc est present ainsi que le 1
dans la feuille perimètre je mets le fond de la ligne en rouge dans
MAJ.


est ce plus clair ??

s'il faut plusieur macro pas de probleme.

On 12 fév, 14:22, FFO
Salut à toi

Beaucoup de mal à te suivre !!!!!
Des informations sont contradictoires
Pour les mêmes conditions en colonne H dans un cas (Suppression) il fau t un
"S" dans un autre cas (Modification) il faut un "M"

Pour les conditions :

verifier que le nom du PC existe s'il existe et s'il y a un 1 en A

Cas suppression :
ajout de la lettre S dans la colone H
Cas Modification
mettre un M en H

S ou M ?????

Dans un code pour les mêmes conditions les instructions au résultats
différents seront éxécutées
Seul le dernier sera maintenu

Il en est de même pour la couleur de l'Onglet "MAJ"

Pour les conditions :
Cas Ajout verifier si le nom du PC existe s'il existe dans la feuille
( périmètre ) et s'il ya un 1 en colonne A

Cas Modification verifer que le nom du PC existe dans la feuille ( péri mètre
) et
qu'il y est un 1 en A
les conséquences
sinon

La conséquence pour les 2 cas:

mettre le fond de la
ligne en Rouge dans la feuille ( MAJ ) s'il existe mais sans le 1 en
colonne A

Dur dur !!!!!!

A moins que chaque cas ai son propre code
Dans cette hypothèse ce n'est pas une macro globale mais autant de macr os
que de cas qu'il faut

Tu voubras bien apporter des précisions

Merci


FFO
Le #18652161
Rebonjour Bastien

Veux tu plusieurs codes chacun traitant d'un cas ou un seul code qui traite
tous les cas
Dans cette 2° hypothèse je ne vois pas comment faire cohabiter ces cas dans
un même code au conditions identiques et conséquences différentes

Merci donc de m'éclairer
bastientot
Le #18652121
donc plusieurs code.

merci d'avance.


On 12 fév, 15:32, FFO
Rebonjour Bastien

Veux tu plusieurs codes chacun traitant d'un cas ou un seul code qui trai te
tous les cas
Dans cette 2° hypothèse je ne vois pas comment faire cohabiter ces ca s dans
un même code au conditions identiques et conséquences différentes

Merci donc de m'éclairer


FFO
Le #18652421
Rebonjour Bastien

Je viens enfin de comprendre !!!!!!!!!

un seul code suffit
Pour distinguer les cas il faut prendre en considération le paramètre de la
colonne A
"Type maj" de l'onglet "MAJ"
Grâce à lui les différents cas pourront être distingués et donc cohabiter
dans le même code

Mais ce n'était pas dit dans la chanson !!!!!!!!!!!!!!!

Donc je te propose ce code :

i = 2
Do While i Ligne = 0
On Error Resume Next
Ligne = Sheets("Périmètre").Range("B1", "B" &
Sheets("Périmètre").Range("B65535").End(xlUp).Row).Find(What:=Sheets("MAJ").Range("B" & i), After:=Sheets("MAJ").Range("B1"), LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Row
If Sheets("MAJ").Range("A" & i) = "A" Then
If Ligne > 1 Then
If Sheets("Périmètre").Range("A" & Ligne) = 1 Then
Sheets("MAJ").Range("A" & i, "H" & i).Interior.ColorIndex = 3
Else
Sheets("Périmètre").Range("A" & Ligne) = 1
Sheets("Périmètre").Range("C" & Ligne, "G" & Ligne).Value =
Sheets("MAJ").Range("C" & i, "G" & i).Value
Sheets("Périmètre").Range("H" & Ligne).Value = "A"
Sheets("Périmètre").Range("A" & Ligne, "H" & Ligne).Font.ColorIndex = 3
End If
Else
Sheets("Périmètre").Range("A" &
Sheets("Périmètre").Range("A65535").End(xlUp).Offset(1, 0).Row) = 1
Sheets("Périmètre").Range("B" &
Sheets("Périmètre").Range("A65535").End(xlUp).Row, "G" &
Sheets("Périmètre").Range("A65535").End(xlUp).Row).Value =
Sheets("MAJ").Range("B" & i, "G" & i).Value
Sheets("Périmètre").Range("I" &
Sheets("Périmètre").Range("A65535").End(xlUp).Row).Value =
Sheets("MAJ").Range("H" & i).Value
Sheets("Périmètre").Range("H" &
Sheets("Périmètre").Range("A65535").End(xlUp).Row).Value = "A"
Sheets("Périmètre").Range("A" &
Sheets("Périmètre").Range("A65535").End(xlUp).Row).Offset(-1,
0).EntireRow.Copy
Sheets("Périmètre").Range("A" &
Sheets("Périmètre").Range("A65535").End(xlUp).Row).PasteSpecial
Paste:=xlPasteFormats
End If
End If
If Sheets("MAJ").Range("A" & i) = "M" Then
If Ligne > 1 Then
If Sheets("Périmètre").Range("A" & Ligne) = 1 Then
Sheets("Périmètre").Range("C" & Ligne, "G" & Ligne).Value =
Sheets("MAJ").Range("C" & i, "G" & i).Value
Sheets("Périmètre").Range("H" & Ligne).Value = "M"
Sheets("Périmètre").Range("I" & Ligne).Value = Sheets("MAJ").Range("H" &
i).Value
Else
Sheets("MAJ").Range("A" & i, "H" & i).Interior.ColorIndex = 3
End If
Else
Sheets("MAJ").Range("A" & i, "H" & i).Interior.ColorIndex = 3
End If
End If
If Sheets("MAJ").Range("A" & i) = "S" Then
If Ligne > 1 Then
If Sheets("Périmètre").Range("A" & Ligne) = 1 Then
Sheets("Périmètre").Range("A" & Ligne, "I" & Ligne).Font.ColorIndex = 3
Sheets("Périmètre").Range("A" & Ligne).Value = ""
Sheets("Périmètre").Range("H" & Ligne).Value = "S"
Else
Sheets("MAJ").Range("A" & i, "H" & i).Interior.ColorIndex = 3
End If
Else
Sheets("MAJ").Range("A" & i, "H" & i).Interior.ColorIndex = 3
End If
End If
i = i + 1
Loop

Sur ce lien ton document adapté ainsi :

http://www.cijoint.fr/cjlink.php?fi...L8lslX.xls

Ouvres le et actives onglet "Périmètre" le bouton "Traitement"

Celà semble fonctionner à priori mais compte tenu de la complexité je te
laisse apprécier le résultat et de me dire si des imperfections sont présentes

Donnes moi des nouvelles !!!!!!
Publicité
Suivre les réponses
Poster une réponse
Anonyme