Macro détail de modification

mussuf

XLDnaute Nouveau
Bonjour,
je lance une bouteille à la mer car je n'arrive pas à trouver de solution.

Étant novice en VBA je tourne en rond et n'arrive pas a résoudre mon problème.

Je m'explique:
J'ai une feuille où sont répertoriées des noms de fichiers avec des indices qui sont susceptibles de changer à chaque mise à jour de ces fichiers. (IP6000-a, IP6000-b...)
Je cherche à créer une macro me permettant de m'afficher, avec une notification simple (par exemple dans une cellule d'une autre feuille "IP5500-a modifié" puis en dessous "IP7000-c modifié" ...) afin de suivre l'évolution de mes mises à jour de fichier d'un seul coup d’œil.
J'ai créé une macro pour essayer par exemple de faire ça lorsque le texte est en gras mais c'est du tout ou rien. Soit ma plage A1:A8 est toute en gras et ça me notifie "modiifée" soit il y a une ou plusieurs cellules qui ne sont pas en gras et ça me met "rien" pour mon exemple. Or je veut que ça me détaille chaque modification.

Voici ce que j'ai fait. Où se trouve mon erreur, comment améliorer ma macro et existe-t-il une solution miracle??

Sub modif()
If Sheets("BD").Range("A1:A8").Font.Bold = True Then
Sheets("Feuil3").Range("A1").Value = "modifiée"
Else: Sheets("Feuil3").Range("A1").Value = "rien"
End If
End Sub

Merci par avance
 

En 1 Clic

XLDnaute Nouveau
Re : Macro détail de modification

Bonjour,

Dans votre macro, vous regardez si toute la plage est en gras ou non.
Il faut réaliser une boucle sur la plage et regarder si chaque cellule est en gras ou non.

Vous pouvez essayer quelque chose comme ca :

Dim cel As Range
Dim i As Long

i=1

For Each cel In Sheets("BD").Range("A1:A7")
If cel.Font.Bold = True Then
Sheets("Feuil3").Range("A" & i) = "modifiée"
Else
Sheets("Feuil3").Range("A" & i) = "rien"
End If
i=i+1
Next
 

mussuf

XLDnaute Nouveau
Re : Macro détail de modification

Merci pour cette réponse!
En effet ça me dit quand une cellule de la plage répond à mon critère. Mais est-ce qu'il existe un moyen de n'avoir de réponse que pour les plages qui sont modifiées, en me marquant le contenu de la plage?
 

En 1 Clic

XLDnaute Nouveau
Re : Macro détail de modification

Bien sur, vous pouvez modifier le code de cette façon :

Code:
Dim cel As Range
Dim i As Long

i=1

For Each cel In Sheets("BD").Range("A1:A7")
    If cel.Font.Bold = True Then
        Sheets("Feuil3").Range("A" & i) = cel.Value
        i=i+1
    End If
Next

Cette macro ne va vous afficher dans la Feuille 3 uniquement le contenu des cellules qui sont en gras dans l'onglet BD
 

mussuf

XLDnaute Nouveau
Re : Macro détail de modification

Parfait !

Et si au lieu de surveiller la modification ="gras" on cherche à regarder si l'indice de notre document a changé.
Par exemple si IP500-a passe à IP500-b en sachant que l'indice se trouve dans une colonne adjacente au nom de fichier listé.
Quelle est la commande pour dire: "si la cellule est modifiée alors je fais ça." ?
 

mussuf

XLDnaute Nouveau
Re : Macro détail de modification

J'ai un autre problème avec ce formulaire
Pour faire apparaitre, dans ma 3eme feuille, les fichiers modifiés avec leur indice, j'ai appliqué à un bouton : Sub modif()
If MsgBox("Vous allez vériifer les mises à jour effectuées", vbOKCancel, "Vérification des mises à jour") Then
Sheets("Feuil3").Select
Columns("A:A").Select
Selection.ClearContents
Range("A1").Select
Dim cel As Range
Dim i As Long
End If
i = 1
For Each cel In Sheets("BD").Range("a2:a600", "b2:b600")
If cel.Font.Bold = True Then
Sheets("Feuil3").Range("a" & i) = cel.Value
i = i + 1
End If
Next
End Sub

Cela a pour effet de me faire apparaitre dans cette 3eme feuille le contenu des cellules en gras soit mon nouvel indice.
Ensuite j'ai défini à ma page la macro suivante:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.Bold = True
ActiveCell.Rows.Font.Bold = True
ActiveCell.Offset(rowOffset:=0, columnoffset:=-2).Activate
ActiveCell.Rows.Font.Bold = True
End Sub

Ce qui a pour effet de mettre en gras la colonne précédente (nom de fichier) et ainsi d'avoir dans ma 3ème feuille le nom de fichier et l'indice qui a été modifié. Le problème c'est que je ne sais pas comment faire pour afficher non pas les uns sous les autres mes résultats mais 2 par 2 côte à côte afin d'avoir par exemple IP700 (colonne A) et a (colonne B pour l'indice)

Merci !
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 731
Membres
110 554
dernier inscrit
Tchana Yoba