Modifier cellules identiques de plusieurs feuilles

simraill

XLDnaute Occasionnel
Bonjur à tous,
Alorqs voila, sur chacune de mes feuilles, qui sont en fait des mois, j'ai les mêmes nom de commandes dans la même colonne (la B), plus des nouvelles commandes qui ne sont que sur la dernière feuille.

Et en fait je voudrai que quand je modifie un nom de commande, ça cherche sur les autres feuilles ce nom de commande et le modifie pareil.

Code:
Public old_value As String

Private Sub Worksheet_BeforeDoubleClick(ByVal Cellule As Range, Cancel As Boolean)
old_value = Cellule.Value
End Sub

Private Sub Worksheet_Change(ByVal Cellule As Range)
    Dim r As Long
    Dim i As Integer, s As Integer
    Dim new_value As String
    Dim cel As Range
    s = Sheets.Count

    '**** Cherche dans toutes les autres pages si la commande modifié y est pour la renomer
    If new_value <> old_value Then
        For i = 1 To s
            Sheets(i).Unprotect ("admin")
            Set cel = Sheets(i).Range("B:B").Find(old_value)
            If Not cel Is Nothing Then
                r = cel.Row
                Sheets(i).Range("B" & r).Value = new_value
            End If
            Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
                , AllowFormattingCells:=True, AllowFiltering:=True, AllowSorting:=True, Password:="admin"
        Next i
    End If

Voila ce que j'ai essayé, quand je le met sur une seule page ça marche niquel, mais dès que je rentre ce code sur toutes mes pages ça bug, en fait ça lancé le code sur toutes mes pages vu qu'à chaque fois la valeur d'une cellule est modifié et ça me modifie des cellule au pif...

Donc voilà si quelqu'un à une idée je suis preneur ^^

Simraill
 

ROGER2327

XLDnaute Barbatruc
Re : Modifier cellules identiques de plusieurs feuilles

Bonjour simraill.


Difficile de répondre avec certitude, la fin du code manquant. Je vois au moins une chose bizarre : la variable new_value n'est pas explicitement initialisée. Elle prend donc toujours la valeur par défaut "" (chaîne de longueur nulle). Est-ce vraiment ce que vous souhaitez ?​


ROGER2327
#6370


Mercredi 11 Décervelage 140 (Saint Eustache, libérateur - fête Suprême Quarte)
19 Nivôse An CCXXI, 4,2317h - marbre
2013-W02-2T10:09:22Z
 

simraill

XLDnaute Occasionnel
Re : Modifier cellules identiques de plusieurs feuilles

Bonjour ROGER2327,

la variable "new_value" et bien initialiser avant son utilisation dès qu'il y a une modificaion de la cellule.
Je n'avai pas mis ce bout de code pour "alléger" un peu mon post :
Code:
    '**** la varriable "fonct" permet d'éviter un bug lors de l'ajout d'une nouvelle commande (voir module 1 sub nouvelle_commande)
    If Cellule.Column = 2 And fonct = False Then
        Application.EnableEvents = False
        '*** supprime les espaces
        Cellule.Value = Replace(Cellule.Value, " ", "")
        '**** met en forme (XX 11 1111)
        Cellule.Value = UCase(Left(Cellule.Value, 2)) & " " & Mid(Cellule.Value, 3, 2) & " " & Mid(Cellule.Value, 5)
        Application.EnableEvents = True
        new_value = Cellule.Value
    End If


Sinon j'ai trouvé la solution par moi-même :

J'ai déclaré une variable public modif_value puis modifié mon code ainsi :
Code:
    '**** Cherche dans toutes les autres pages si la commande modifié y est pour la renomer
    If new_value <> old_value And modif_value = False Then
        modif_value = True        For i = 1 To s
            Sheets(i).Unprotect ("admin")
            Set cel = Sheets(i).Range("B:B").Find(old_value)
            If Not cel Is Nothing Then
                r = cel.Row
                Sheets(i).Range("B" & r).Value = new_value
            End If
            Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
                , AllowFormattingCells:=True, AllowFiltering:=True, AllowSorting:=True, Password:="admin"
        Next i
        modif_value = False  End If
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 096
Membres
104 030
dernier inscrit
Angy