Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

11 réponses
Avatar
bastientot
Bonjour,

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

soir une feuille ( p=E9rim=E8tre ) 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=E9gorie A B C
E une autre cat=E9gorie P M G TG
F un lib=E9ll=E9
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=E9gorie A B C
E une autre cat=E9gorie P M G TG
F un lib=E9ll=E9
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=E9rim=E8tre ) 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=E9rim=E8tre 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=E9rim=E8tre ) et
qu'il y est un 1 en A dans ce cas mettre a jour les informations
diff=E9rentes 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=E9rim=E8tre ou si le serveur n'exite pas ..

pour chaque modif dans la feuille p=E9rim=E8tre mettre en colonne I la
donn=E9e de la colonne H de MAJ

Merci d'avance de votre aide.

exemple de fichier :
http://cjoint.com/data/comn3wYZnV.htm

10 réponses

1 2
Avatar
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 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
Avatar
bastientot
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 wrote:
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


Avatar
FFO
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
Avatar
bastientot
donc plusieurs code.

merci d'avance.


On 12 fév, 15:32, FFO wrote:
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


Avatar
FFO
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 < Sheets("MAJ").Range("B65535").End(xlUp).Offset(1, 0).Row
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?file=cj200902/cij7L8lslX.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 !!!!!!
Avatar
bastientot
impressionnant grand merci juste une petite question si je dois
ajouter de nouvelle colonne de data pourrais tu m'expliquer le
fonctionnement ou commenter le code.

franchement grand merci


On 12 fév, 16:20, FFO wrote:
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 < Sheets("MAJ").Range("B65535").End(xlUp).Offset(1, 0).Row
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:=Sheet s("MAJ")­.Range("B" & i), After:=Sheets("MAJ").Range("B1"), LookIn:=x lValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirecti on:=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?file=cj200902/cij7L8lslX.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 !!!!!!


Avatar
bastientot
Apres test il y a un petit probleme dans le cas ou le serveur est
presnet dans le feuille périmetre mais sans 1 en colonne A dans ce cas
il y a maj des info et un 1 est possitionné en A mais la pas de 1.

et pour la modification il semblerais que le 1 soit retirer alors que
normalement il ne devrait pas y toucher.

encore merci FFO


On 12 fév, 16:40, wrote:
impressionnant grand merci juste une petite question si je dois
ajouter  de nouvelle colonne de data pourrais tu m'expliquer le
fonctionnement ou commenter le code.

franchement grand merci

On 12 fév, 16:20, FFO wrote:



> Rebonjour Bastien

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

> un seul code suffit
> Pour distinguer les cas il faut prendre en considération le paramèt re de la
> colonne A
>  "Type maj" de l'onglet "MAJ"
> Grâce à lui les différents cas pourront être distingués et do nc 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 < Sheets("MAJ").Range("B65535").End(xlUp).Offset(1, 0).Row
> 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:=She ets("MAJ")­­.Range("B" & i), After:=Sheets("MAJ").Range("B1"), LookIn :=xlValues, _
>         LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirec tion:=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").Rang e("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?file=cj200902/cij7L8lslX.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 son t présentes

> Donnes moi des nouvelles !!!!!!- Masquer le texte des messages préc édents -

- Afficher le texte des messages précédents -


Avatar
FFO
Rebonjour bastien
Heureux de t'avoir satisfait

Pour les explications
Ce code semble complexe mais qu'en apparence car il se répète
il se scinde en 2 groupes de lignes
Le 1° groupe :

i = 2
Do While i < Sheets("MAJ").Range("B65535").End(xlUp).Offset(1, 0).Row
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

Prend chaque ligne de la colonne B onglet "MAJ" à partir de la ligne 2
représenté par la variable i jusqu'à la dernière saisie :

i = 2
Do While i < Sheets("MAJ").Range("B65535").End(xlUp).Offset(1, 0).Row

cherche pour la valeur de la colonne B onglet "MAJ" ligne i dans l'onglet
"Périmètre" colonne B la ligne qui a la même valeur représenté par la
variable Ligne :

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

En résumé

Pour un nom de PC
i est le numéro de la ligne onglet "MAJ"
Ligne est le numéro de la ligne onglet "Périmètre"

Le 2° groupe :

Analyse et opère les actions en fonction du paramètre colonne A ligne i de
l'onglet "MAJ" qui correspond au cas Ajout/Modification/Suppression

Pour Ajout

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

Si Cellule Ai onglet "MAJ" = "A" :

If Sheets("MAJ").Range("A" & i) = "A" Then

Si Ligne est supérieur à 1 donc le nom du PC a été trouvé onglet "Périmètre" :

If Ligne > 1 Then

Si la cellule ALigne onglet "Périmètre" est à 1 :

If Sheets("Périmètre").Range("A" & Ligne) = 1 Then

Les cellules de Ai à Hi onglet "MAJ" sont coloré en rouge :

Sheets("MAJ").Range("A" & i, "H" & i).Interior.ColorIndex = 3

Si la cellule ALigne onglet "Périmètre" n'est pas à 1 :

Else

onglet Périmètre

Cellule ALigne = 1:
Sheets("Périmètre").Range("A" & Ligne) = 1

les valeurs des Cellules de CLigne à GLigne sont égale au valeur des
cellules Ci à Gi onglet "MAJ" :
Sheets("Périmètre").Range("C" & Ligne, "G" & Ligne).Value =
Sheets("MAJ").Range("C" & i, "G" & i).Value

La cellule HLigne = "A" :
Sheets("Périmètre").Range("H" & Ligne).Value = "A"

Le texte des cellules ALigne à HLigne est rouge :
Sheets("Périmètre").Range("A" & Ligne, "H" & Ligne).Font.ColorIndex = 3

Si le nom de PC n'est pas trouvé :

Else

Onglet "Périmètre
1° cellule vide de la colonne A = 1 :
Sheets("Périmètre").Range("A" &
Sheets("Périmètre").Range("A65535").End(xlUp).Offset(1, 0).Row) = 1

Les valeurs des Cellules de B et 1° ligne colonne A ayant une cellule pleine
à G et 1° ligne colonne A ayant une cellule pleine sont égales aux cellules
de Bi à Gi onglet "MAJ" :
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

La valeur de la cellule I et 1° ligne colonne A ayant une cellule pleine est
égale à Hi onglet "MAJ" :
Sheets("Périmètre").Range("I" &
Sheets("Périmètre").Range("A65535").End(xlUp).Row).Value =
Sheets("MAJ").Range("H" & i).Value

La valeur de la cellule H et 1° ligne colonne A ayant une cellule pleine est
égale à A:
Sheets("Périmètre").Range("H" &
Sheets("Périmètre").Range("A65535").End(xlUp).Row).Value = "A"

Je reporte la mise en forme de la ligne précédente :

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

Même démarche pour les autre Cas


J'espère ne pas t'avoir trop noyé !!!!

N'hésites pas à me demander des compléments d'explication
Avatar
FFO
Rebonjour Bastien

Peux tu m'envoyer le document aprés traitement ayant l'anomalie en me
mettant un repère et commentaire pour me dire ce qui était attendu

Merci
Avatar
FFO
Rebonjour Bastien

Aprés réflexion il me parait inconcevable que l'outil fonctionne bien pour
l'ensemble des cas et que pour 1 type de donnée représentant un cas il
dysfonctionne
Si il dysfonctionne dans une configuration celà doit être pour tous les noms
de PC qui portent cette configuration et non 1 parmis tous

Je pense à mon avis qu'il faut en chercher la raison dans la qualité des
données de celui qui ne donne pas les résultats escomptés

Essaies de voir dans ce sens et dis moi !!!!!
1 2