Ajouter un critère

nonossov Messages postés 638 Statut Membre -  
Frenchie83 Messages postés 2254 Statut Membre -
Bonjour,
voila mon code macro, il consiste a nettoyer une feuille excel il déplace quelques colonnes et elle delete les autres, j'aimerai avant de supprimer les autres colonnes de déplacer les colonnes : M vers K et P vers J:

<code xml>Sub NETTOYAGE()
If MsgBox("Etes-vous sur de vouloir nettoyer le journal?", vbOKCancel) = vbCancel Then
End
End If

Range( _
"A:B,I:M,P:AH" _
).Select
Selection.Delete Shift:=xlToLeft
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Columns("E:E").Select
Selection.Cut Destination:=Columns("C:C")
Columns("E:E").Select
Selection.Delete Shift:=xlToLeft
Columns("E:E").Select
Columns("F:F").ColumnWidth = 4.29
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
Columns("F:F").Select
Selection.Cut Destination:=Columns("A:A")
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Columns("H:H").Select
Selection.Cut Destination:=Columns("B:B")
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Columns("E:E").Select
Selection.Insert Shift:=xlToRight
Columns("L:L").Select
Selection.Cut Destination:=Columns("E:E")
Columns("J:J").Delete Shift:=xlToLeft

'pour déterminer le nombre de lignes
Dim nbCells As Long
nbCells = Application.WorksheetFunction.CountA(Columns("F:F"))

Range("I2").Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
Range("I2").Select
Selection.Copy
Range("I2").Select
Application.CutCopyMode = False
If nbCells > 0 Then
Selection.AutoFill Destination:=Range("I2:I" & nbCells), Type:=xlFillDefault
End If
Rows("1:1").Select
Selection.Delete Shift:=xlUp

Columns("A:A").Select

CorrectionDateScanfact

End Sub
</code>

2 réponses

  1. nonossov Messages postés 638 Statut Membre
     
    Up Merci
    0
    1. nonossov Messages postés 638 Statut Membre
       
      Plz up
      0
  2. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour
    j'aimerai avant de supprimer les autres colonnes de déplacer les colonnes : M vers K et P vers J A partir de quelle ligne?
    Servez vous de l'enregistreur de macro comme vous l'avez fait pour supprimer les colonnes.
    Profitez en pour arranger le résultat obtenu; exemple: voici le même début de votre macro après toilettage
        Columns("C:C").Insert Shift:=xlToRight
        Columns("E:E").Cut Destination:=Columns("C:C")
        Columns("E:E").Delete Shift:=xlToLeft
        Columns("F:F").ColumnWidth = 4.29
        Columns("A:A").Insert Shift:=xlToRight
        Columns("F:F").Cut Destination:=Columns("A:A")
        Columns("B:B").Insert Shift:=xlToRight
        Columns("H:H").Cut Destination:=Columns("B:B")
        Columns("C:C").Insert Shift:=xlToRight
        Columns("E:E").Insert Shift:=xlToRight
        Columns("L:L").Cut Destination:=Columns("E:E")
        Columns("J:J").Delete Shift:=xlToLeft

    Cdlt
    0
    1. nonossov Messages postés 638 Statut Membre
       
      je n'ai pas compris comment je peux introduire cette macro a mon macro origine??
      0
    2. nonossov Messages postés 638 Statut Membre
       
      Mr Frenchie83, merci de m'aider sur ça !
      0
      1. Frenchie83 Messages postés 2254 Statut Membre 339 > nonossov Messages postés 638 Statut Membre
         
        Bonjour
        Il ne s'agit pas d'introduire, mais de remplacer
        Votre code légèrement modifié:
        Sub NETTOYAGE()
            Application.ScreenUpdating = False
            Dim nbCells As Long
            If MsgBox("Etes-vous sur de vouloir nettoyer le journal?", vbOKCancel) = vbCancel Then End
            Range("A:B,I:M,P:AH").Delete
            Columns("C:C").Insert
            Columns("E:E").Cut Destination:=Columns("C:C")
            Columns("E:E").Delete
            Columns("F:F").ColumnWidth = 4.29
            Columns("A:A").Insert
            Columns("F:F").Cut Destination:=Columns("A:A")
            Columns("B:B").Insert
            Columns("H:H").Cut Destination:=Columns("B:B")
            Columns("C:C").Insert
            Columns("E:E").Insert
            Columns("L:L").Cut Destination:=Columns("E:E")
            Columns("J:J").Delete
            
           'pour déterminer le nombre de lignes
            nbCells = Application.WorksheetFunction.CountA(Columns("F:F"))
            Range("I2:I" & nbCells).FormulaR1C1 = "=RC[-2]+RC[-1]"
            Rows("1:1").Delete
            Columns("A:A").Select
            CorrectionDateScanfact
        End Sub



        Quant à votre demande: j'aimerai avant de supprimer les autres colonnes de déplacer les colonnes : M vers K et P vers J A partir de quelle ligne?
        Comme je l'ai dit plus haut, servez vous de l'enregistreur de macro comme vous l'avez fait pour supprimer les colonnes et retouchez (si vous le voulez, mais ce n'est pas obligatoire) le code obtenu pour clarifier l'écriture et ainsi faciliter la lecture.
        Cdlt
        0