Changement d'une partie de code par un code



Bonjour,

J'essaie de faire modifier une partie du code de mon module 1 par une autre partie de code mais je n'y arrive pas.

Je voudrais que si la valeur dans la case W1 = lundi , toutes les lignes du codes comportant un " - 1 " soit remplacée par un " - 3 "

Ci-joint l'exemple de mon code.

Pouvez-vous m'aider ?

D'avance merci pour votre aide

Laurent

5 réponses

  1. Contributeur
    bonjour,
    ce genre de choses se réalise habituellement en utilisant des variables dont on change la valeur, en appelant des fonctions, ou en passant des paramètres à des routines.
    merci de partager le texte de ton code, et pas une image. en veillant à utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
    veille aussi à compiler ton code avant de le partager, pour éliminer les erreurs les plus flagrantes.
    je suggère aussi d'ajouter une ligne "option explicit" en début de module.
    cela nous permettra de mieux t'aider.
    1. Modérateur
      Bonjour

      Ne pas confondre la valeur égale quelque chose et la valeur contient quelque chose...
      ce que tu cherches n'est pas isolé sur la ligne il fait partie d'un ensemble de texte...
      1. Bonjour,

        Désolé d'avoir pris autant de temps à revenir vers vous mais voilà le code que j'avais d'abord mis en image.

        J'espère que vous pourrez m'aider.

        Laurent

        <code basic>


        Sub Extraction2()

        'v?rifier si cellule = lundi pour changer valeur

        With Worksheets("Overview")
        If .Range("X1") = "lundi" Then

        End If

        ActiveWorkbook.VBProject.VBAProject.vbacomponents("Module1").CodeModule

        For i = 1 To .CountOfLines
        Cible = .Lines(i, 1)
        If Cible = "- 1" Then
        .ReplaceLine i, "- 3"

        End If
        Next
        'Call AllCarrier

        End With
        End Sub
        </code>

        Sub AllCarrier()

        Application.ScreenUpdating = False
        Sheets("Query").Select

        'All Carrier'
        'Create Sheet'
        Sheets.Add After:=ActiveSheet
        ActiveSheet.Name = "All Carrier"
        'Data Extraction'
        Sheets("Query").Select
        Columns("A:T").Copy
        Sheets("All Carrier").Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Columns("A:T").EntireColumn.AutoFit
        Columns("F:F").Select
        Application.CutCopyMode = False
        Selection.NumberFormat = "m/d/yyyy"
        Range("A1").Select
        'Saving in Folder'
        Sheets("All Carrier").Select
        Const csPath1 As String = "P:\Transport Department\Transport\D?partement Transport\Transport\Daily\Tracking\PNTK Report\All Carrier\"
        MyName = ActiveSheet.Name & "_" & Format(Now() - 1, "dd-mm-yyyy") 'VALEUR A REMPLACER
        ActiveSheet.Copy
        ActiveWorkbook.SaveAs Filename:=csPath1 & MyName
        ActiveWorkbook.Close
        'Delete Sheet'
        Application.DisplayAlerts = False
        Sheets("All Carrier").Delete
        Sheets("Overview").Select
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True

        Call AllDailyData

        End Sub
        1. Contributeur
          tu n'expliques pas ce que tu veux réaliser avec ton code.
          peut-être ainsi:
          Private Sub Extraction2()
          Dim nombre As Integer
          With Worksheets("Overview")
              If .Range("X1") = "lundi" Then
                  nombre = 3
              Else
                  nombre = 1
              End If
          End With
          Call AllCarrier(nombre)
          End Sub
          Private Sub AllCarrier(unoutrois As Integer)
          Dim MyName As String
          Application.ScreenUpdating = False
          Sheets("Query").Select
          
          'All Carrier'
          'Create Sheet'
          Sheets.Add After:=ActiveSheet
          ActiveSheet.Name = "All Carrier"
          'Data Extraction'
          Sheets("Query").Select
          Columns("A:T").Copy
          Sheets("All Carrier").Select
          Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False
          Columns("A:T").EntireColumn.AutoFit
          Columns("F:F").Select
          Application.CutCopyMode = False
          Selection.NumberFormat = "m/d/yyyy"
          Range("A1").Select
          'Saving in Folder'
          Sheets("All Carrier").Select
          Const csPath1 As String = "P:\Transport Department\Transport\D?partement Transport\Transport\Daily\Tracking\PNTK Report\All Carrier\"
          MyName = ActiveSheet.Name & "_" & Format(Now() - unoutrois, "dd-mm-yyyy") 'VALEUR A REMPLACER
          ActiveSheet.Copy
          ActiveWorkbook.SaveAs Filename:=csPath1 & MyName
          ActiveWorkbook.Close
          'Delete Sheet'
          Application.DisplayAlerts = False
          Sheets("All Carrier").Delete
          Sheets("Overview").Select
          Application.ScreenUpdating = True
          Application.DisplayAlerts = True
          
          'Call AllDailyData
          
          End Sub
          1. Bonjour,

            Merci pour ton aide et désolé pour le fait de ne pas être trop explicite sans le vouloir.

            Je vais essayé d'expliquer.

            Dans mon fichier XLS, il y a une case" W1" dans laquelle est traduit la date du jour en lettre (lundi, mardi,.…)

            Dans le code après "all carrier" se trouve des instructions pour copier les informations d'une page "QUERY" vers un nouveau fichier "all carrier" comportant la date du jour -1 (c'est un rapport journalier basé sur des datas de la veille).

            Ce que voudrais, c'est que lorsque la case W1 = lundi, c'est avant que le code "all carrier" se fasse, que la date du jour - 1 soit changée en date du jour -3 pour refléter le vendredi et non le dimanche.

            Est-ce que c'est plus clair ainsi ?

            Merci en tous les cas pour ton aide et je vais essayer dès que j'en ai l'occasion le code que tu as modifié.

            Laurent