Effacer ligne si toutes les conditions sont remplies

Bonjour moun10be,

En effectuant quelques tests ... je viens de constater un éventuel souci ...

Je suis dans le fichier "Tableau" ...

Je saisis un Tram (son préfix s’affiche automatiquement) et les 2 cases (Tram et Préfix) s’inscrivent sur la feuille "Tableau" du fichier "LogBook" ...

Mais s’il y a déjà des infos dans cette cellule ... ce sera écrasé ... je n’ai pas bien compris le fonctionnement ou faudra-t-il vérifier avant d’écrire ?

ric

Bonjour ric

Si j'ai bien compris ce que tu viens de me dire, c'est les conditions que je recherche que la feuille du classeur tableau soit à l'identique que celui du logbook et vis vers ça (comme un effet miroir) donc s'il y a eu une modification sur l'une des 2 feuilles tableau qu'ils soit retranscrit sur l'autre feuille.

Bonjour moun10be,

J'essaie de comprendre comment tu veux fonctionner ...

Les fichiers partagés ...

1re option -- 2 personnes pourraient ouvrir simultanément le fichier "Tableau.xlsm" et saisir des données ... ça c'est un fichier partagé ... enregistrer manuellement ou automatiquement le fichier fait apparaître les données dans la copie du fichier de l'autre personne ...

2e option -- 2 personnes pourraient ouvrir simultanément le fichier "LogBook.xlsm" et saisir des données ... ça c'est un fichier partagé ... enregistrer manuellement ou automatiquement le fichier fait apparaître les données dans la copie du fichier de l'autre personne ...

...

Les fichiers où il faut coder pour écrire dans l'autre fichier, lequel autre fichier est différent et ne porte pas le même nom ...

3e option -- l'un ouvre "Tableau.xlsm" et l'autre "LogBook.xlsm" >> celui dans le fichier "Tableau.xlsm" saisit des données et ces données se transcrivent dans la feuille "Tableau" du fichier "Logbook.xlsm" >> la personne travaillant dans le fichier "LogBook.xlsm" peut consulter, mais ne modifiera pas de données dans la feuille "Tableau" du fichier "Logbook.xlsm", mais seulement les autres feuilles (onglets) ...

Ai-je bien compris ? ... ou suis-je perdu dans l'espace-temps au-delà des frontières de l'inconnu ?

ric

C'est exactement la troisième option, et vice versa quand ont apportent des modifications dans les feuilles PCC, T2000, T3000, T4000, TNG soit inscrit dans les cellules (A partir de la colonne AL) qui leurs est attribué du classeur Tableau feuille Tableau

3e option -- l'un ouvre "Tableau.xlsm" et l'autre "LogBook.xlsm" >> celui dans le fichier "Tableau.xlsm" saisit des données et ces données se transcrivent dans la feuille "Tableau" du fichier "Logbook.xlsm" >> la personne travaillant dans le fichier "LogBook.xlsm" peut consulter, mais ne modifiera pas de données dans la feuille "Tableau" du fichier "Logbook.xlsm", mais seulement les autres feuilles (onglets) ..

Dit moi ric j'ai essayé de placer un bouton recherche dans le classeur logbook de la feuille Tableau (le même principe que celui du classeur Tableau) et pour ceux j'ai recopié le code que tu m'avais fait pour le classeur Tableau, mais malheureusement j'ai un code d'erreur lors de l'exécution de la macro

Début de code

Sub LaRechercheEtEcritureCodeTram()

capture12 capture13

Bonjour moun10be,

2 points ... ton souci de "Centrer sur cellule" ... et une autre interrogation sur le travail dans les fichiers ...

Points 1 ... "Centrer sur cellule" est une "Function" (une macro) qui doit être situé dans un "module" afin d’être accessible ... peu importe d’où on l’appelle ... "LeTarget" est une variable que j'ai créée ... car la valeur de Target (implicitement dans la feuille en cours) ne peut être utilisée dans un module ou une autre feuille ... je viens de regarder le fichier et j'ai placé la variable "LeTarget" en haut du module afin qu'elle soit accessible de toutes les procédures du module ... mais j'ai oublié de l'enlever dans les déclarations (Dim ..... ) des 2 procédures ... donc supprime "LeTarget As Range," des 2 procédures "LaRechercheEtEcritureCodeTram" et SupprimerEcrituresCodeTramAvantLHeure ... enregistre le fichier et teste à nouveau ...

Points 2 ... revenons aux 2 fichiers ... chacun va ouvrir un des 2 fichiers et les données de ces 2 fichiers sont transcrites dans la feuille "Tableau" du fichier "Logbook.xlsm" ... donc chacun est susceptible d’écraser les données que l’autre vient tout juste de saisir ...

Si c’est bien cela ... pourquoi la feuille "Tableau" du fichier "Tableau.xlsm" n’est-elle pas plutôt dans le fichier "LogBook" et les 2 personnes ne travaillent que dans un seul fichier "LogBook" ? ... un fichier qui serait partagé ... en enregistrant (manuellement ou automatiquement) ... les données sont presque instantanément accessibles à l’autre personne ...

Pourquoi 2 fichiers différents si les données de l’un doivent se refléter dans l’autre ? C’est plus compliqué qu’un seul fichier partagé ...

Tant que ce n’est pas clair dans ma tête ... je ne peux plus avancer ...

Désolé de ne pas bien comprendre le fonctionnement que tu tentes de mettre en place ...

ric

Bonjour ric,

Pourquoi 2 fichiers différents si les données de l’un doivent se refléter dans l’autre ? C’est plus compliqué qu’un seul fichier partagé ...

La raison de ma demande c'est que dans mon entreprise hormis les autres application divers, j'aimerai que c'est deux fichiers soit intégrer dans nos taches nous avons plusieurs responsables et deux de ces catégories de responsable devraient l'un travailler avec le fichier Tableau en mode compatibilité et l'autre responsable avec le fichier logbook en mode compatibilité et chaque un d'entre eux aurait une possibilité d'être informé des modifications sans pour autant ouvrir le fichier de son collègues (cela pour but d'évité qu'il ait les deux fichiers en mode compatibilité et de devoir perdre du temps à le contacté pour qu'il le ferme afin que je puisse reprendre la main dessus)

Si ce n'est pas clair dit le moi

Non le but c'est que seul le fichier logbook puise apporter des modification dans les feuilles PCC, T2000, T3000, T4000, TNG et la feuille tableau est juste consultable au cas où il y aurait eu des modification du fichier Tableau et dans le classeur tableau de la feuille tableau les modification peuvent être apporté et seul les modification qui ont été apporter du classeur logbook apparaitront dans la feuille tableau du classeur tableau à partir de la colonne AL

Points 2 ... revenons aux 2 fichiers ... chacun va ouvrir un des 2 fichiers et les données de ces 2 fichiers sont transcrites dans la feuille "Tableau" du fichier "Logbook.xlsm" ... donc chacun est susceptible d’écraser les données que l’autre vient tout juste de saisir ...

Oui j'avais vu cette possibilité mais il faudrait absolument migré sur Microsoft 365 et je penses que les RH n'accepterons jamais

Je suis qu'un tous petit pion au saint de l'entreprise, mais j'essaie à mon niveau au maximum de faciliter la tâche de mes collègues ainsi que pour moi

Bonjour moun10be,

Tu mentionnais que les fichiers partagés sont source de soucis ... un peu de recherche sur le Net semble confirmer cela ...

La personne qui travaillera dans le fichier "Tableau.xlsm" ... les changements qu’elle fera ... seront retranscrits dans la feuille "Tableau" du fichier "LogBook.xlsm" (c’est ce que tu as demandé) ... pour que cela soit possible ... il y a 2 possibilités ... le fichier "LogBook.xlsm" ne sera pas utilisé par d’autres personnes ... ou bien le fichier "Logbook.xlsm" sera un fichier partagé ...

Est-ce que je termine le fichier "tableau.xlsm" ?

À+

ric

Bonjour ric,

Oui le logbook.xlsm sera un fichier partagé sur le réseau, par moment nous seront plusieurs utilisateur à l'utiliser en même temps, mais une seul personne sera en mode compatibilité (la première à avoir ouvert le fichier et qui aurait accepté le mode lecture et écriture) et de même pour le fichier Tableau.xlsm

pour que cela soit possible ... il y a 2 possibilités ... le fichier "LogBook.xlsm" ne sera pas utilisé par d’autres personnes ... ou bien le fichier "Logbook.xlsm" sera un fichier partagé ...

J'aimerai beaucoup que ce fichier soit aussi opérationnel, pour mon projet ces deux fichiers sont essentiel pour une bonne communication entre les deux services

Est-ce que je termine le fichier "tableau.xlsm" ?

Merci.

Bonjour moun10be,

Il reste un peu de code à saisir et quelques tests de partage de fichier sur mon réseau local ...

Je reviens dès que possible ...

ric

Bonjour moun10be,

Désolé pour le délai ... j’éprouve des difficultés avec l’accès aux ressources ...

ric

Bonjour ric,

Désolé pour le délai ... j’éprouve des difficultés avec l’accès aux ressources ...

Tu n'as vraiment pas de quoi à être désolé, je suis déjà très reconnaissant que tu m'aides autant

Prends tout ton temps

Merci

Bonjour ric,

Je reviens vers vous concernant l'impasse que nous étions confronté lors de nos dernières échange.

J'aurai aussi besoin d'aide sur d'autres sujets et amélioration du fichier.

1) J'aimerai améliorer ce code existant afin qu'il se limite à certaines lignes des différents blocs

Bloque 1: Date F4 à F43 - Nom G4 à F43 - Nom K4 à K43

Bloque 2: Date Q4 à Q43 - Nom R4 à R43 - Nom V4 à V43

Bloque 3: Date F45 à F90 - Nom G45 à G43 - Nom K45 à K90

Bloque 4: Il ne doit pas y avoir de condition dans à partir des cellules des colonnes Q44 et R44

'Pour attribuer les dates & le nom de la personne qui signe
Private Sub Worksheet_Change(ByVal T As Range)

'Colonne A Tram
If T.Column = 1 Then '1 Then correspond à la colonne A - 7 Then c'est la colonne G et 6 Then c'est la colonne F
T(1, 7) = Environ("username") 'Pour ajouter le nom
T(1, 6) = Date   'Pour ajouter la date 
End If

'Colonne J Réparé
If T.Column = 10 Then '10 Then correspond à la colonne J - 2 Then c'est la colonne K
T(1, 2) = Environ("username") 'Pour ajouter le nom
End If

'Colonne M Tram
If T.Column = 13 Then '13 Then correspond à la colonne M - 6 Then c'est la colonne R et 5 Then c'est la colonne Q
T(1, 6) = Environ("username") 'Pour ajouter le nom
T(1, 5) = Date
End If

'Colonne U Réparé
If T.Column = 21 Then '21 Then correspond à la colonne U - 2 Then c'est la colonne V
T(1, 2) = Environ("username") 'Pour ajouter le nom
End If
End Sub

2) J'aimerai que lorsque je clic sur la macro et que la petite fenêtre s'ouvre, que le mot de passe que je dois tapez ne se vois pas (qu'il y ait des étoile à la place des lettres)

'Pour déproteger toutes les feuilles du classeur
Sub DeprotegeFeuilles()
Dim MotDePasse As String
Dim Rep As String, Sh As Worksheet

MotDePasse = "toto"

Do
Rep = InputBox("Entrer le mot de passe?")
If Rep = "" Then Exit Sub
If Rep <> MotDePasse Then
If MsgBox("Impossible d'exécuter la procédure " _
& "sans le mot de passe. !" & vbCrLf & vbCrLf & _
"Désirez-vous réessayer ?", vbCritical + _
vbYesNo, "Attention") = vbNo Then
Exit Sub
End If
End If
Loop Until Rep = MotDePasse

For Each Sh In Worksheets
Sh.Unprotect MotDePasse
Next

Sheets("Accueil").Select
    Range("A1").Select
End Sub

3) j'aimerai que lorsque je clic sur la macro et que j'introduire le mot de passe qu'il y ait des petites étoiles et non les lettres.

'code pour protéger bouton VBA
Sub modepasse_SupprimerLesLignes()
Dim mDp As String
mDp = InputBox("Saisissez ci dessous votre mot de passe", _
"M.P.F.E. Kontrol", "")
If mDp <> "toto" Then
MsgBox "Vous n'avez pas saisi le bon mot de passe", _
vbOKOnly, "M.P.F.E."
Exit Sub
Else
SupprimerLesLignes 'correspond au nom du code à lancer
End If
End Sub

4) j'aimerai que lorsque je clic sur la macro et que j'introduire le mot de passe qu'il y ait des petites étoiles et non les lettres et me modifier le code afin qu'il s'enregistre directement sur ce chemin (U:\OPERATIONS\BU TRAM\TECHNICAL\DEPOTS\DEP. IXELLES\_common\GCMXL\Archives logbook)

Sub SauvegarderLeClasseur()
   Dim LeNom As String
   Dim Chemin As String
   Dim NomFichier As String
   Dim Rep
   Dim Reponse As String

   ' renseigne la variable publique
   ' ce nom indiquera de traiter les 5 feuilles
   QuelleFeuille = "Les5Feuilles"

   'appel de procédure de tri
   Call Module2.MacroTriDes3Blocs

   ' il faut répondre à la question
   Reponse = InputBox("Quelle est la question du jour ?", "Quel jour sommes-nous ?") 'La variable reçoit la valeur entrée dans l'InputBox

   ' si la réponse est différente, mettre fin à la procédure
   If Reponse <> "toto" Then 'Si la valeur est différente de "" on affiche le résultat
      Exit Sub

      ' sinon , l 'on continue
   Else

      ' prédédermine un chemin
      chdir ThisWorkbook.Path

      ' ouvre une fenêtre pour choisir le dossier de sauvegarde
      Set Rep = Application.FileDialog(msoFileDialogFolderPicker)
      Rep.Show

      ' mémorise ce chemin en ajoutant le séparateur
      Chemin = Rep.SelectedItems(1) & "\"

      ' le nom du fichier en cours et enlever son extension (.xlsm)
      LeNom = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5)

      ' construit le nouveau nom du fichier à sauvegarder et ajoute l'extension
      NomFichier = LeNom & "-" & Day(Date) - 1 & "-" & Month(Date) & "-" & Year(Date) & "-" & ".xlsm"

      ' sauvegarde d'une copie du fichier en cours dans le nouveau dossier et sous son nouveau nom
      ActiveWorkbook.SaveCopyAs Filename:=Chemin & NomFichier   ' , FileFormat:=(52)

      ' sauvegarde du fichier en cours
      ActiveWorkbook.Save

    End If

End Sub

Désoler si les 3 dernière questions se ressemble 😁

Merci d'avance.

Bonjour,

Concernant la question 1 j'ai trouvé la solution j'ai rajouté ces lignes dans les codes des bloques concerné afin de lui délimité ces cellules d'action.

Bloque 1 & 2

If T.Row >= 4 And T.Row <= 43 Then 

Bloque 3 & 4

ElseIf T.Row >= 45 And T.Row <= 90 Then

Bonjour,

Par contre je n'arrive pas à résoudre se problème.

Je m'explique, j'ai un code qui se trouve sur la feuille concerné qui à pour action que lorsque l'une des cellules est remplie de la colonne A4 à A43

qu'il y ait les dates sur la ligne des cellules de F4 à F43 et les noms de G4 à G43 jusqu'à la tout va bien

Par contre lorsque je met en action une autre macro qui permet d'effacer les lignes qui remplie la condition que si les cellules J4 à J43 et K4 à K43 soit signé alors la ligne se supprime automatiquement, cela fonctionne correctement par contre après cette action j'ai la cellule F et G de la dernière ligne libre du bloc A4 à K43 ainsi F43 et G43 est remplie par la date et le nom (il doit certainement avoir une erreur dans l'une des deux macros)

capture10
'Ajouter nom et date sur cellule de feuille
Private Sub Worksheet_Change(ByVal T As Range)

If T.Row >= 4 And T.Row <= 43 Then      ' Si clic en lignes 4 à 43
    'Cellule de A4 à K43 et M4 à V43

'Colonne A Tram partie tenir
If T.Column = 1 Then
T(1, 7) = Environ("username")
T(1, 6) = Date
End If
'Colonne J Réparé
If T.Column = 10 Then
T(1, 2) = Environ("username")
End If

End If
End Sub

Macro qui supprime les ligne signé

Sub SupprimerLesLignes()
    Dim LFeuil(), Z As Integer, Y As Integer
    Dim Plage
    Dim Reponse As String

    Application.ScreenUpdating = False

    LFeuil = Array("PCC", "T2000", "T3000", "T4000", "TNG")

    For Z = LBound(LFeuil) To UBound(LFeuil)
        Sheets(LFeuil(Z)).Activate

        ' 1er bloc testé sur J
        For Y = 43 To 4 Step -1
            If Sheets(LFeuil(Z)).Cells(Y, "J") <> "" Then
                Sheets(LFeuil(Z)).Range("A" & Y + 1 & ":K43").Copy
                Sheets(LFeuil(Z)).Range("A" & Y & ":K42").PasteSpecial Paste:=xlValues
            End If
        Next Y
        Set Plage = Sheets(LFeuil(Z)).Range("A43:K43")
        Plage.ClearContents
        Sheets(LFeuil(Z)).Range("K4").Select
Next Z
End Sub

Merci d'avance pour vôtres aides.

Rechercher des sujets similaires à "effacer ligne toutes conditions remplies"