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
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

Poser une question


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
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
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
merci d'avance.
On 12 fév, 15:32, FFO
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 !!!!!!