luke3300
XLDnaute Impliqué
Bonjour le forum,
Je reviens vers vous pour un souci de format dans l'action de mon code VBA.
Celui-ci est censé coller une formule dans les cellules d'une colonne et l'étirer jusqu'au bout afin que le résultat s'affiche et puisse être filtré ensuite.
Je sais que la formule fonctionne parfaitement, ce qui cloche c'est que le code colle et étire la formule en tant que "texte" et non en tant que formule. Pourtant il est bien spécifié dans le code ".Formula".
Je vous mets le code:
****************************
Private Sub btnDL11_Click()
vCible = ActiveWorkbook.Name
ChDir ThisWorkbook.Path
Workbooks.Open Filename:=ThisWorkbook.Path & "\DL11b_Verschillen_Modifica.xlsx"
vSource = ActiveWorkbook.Name
Workbooks(vSource).Sheets("DL11b_Verschillen_Modifica").Copy Before:=Workbooks(vCible).Sheets("GEO")
vCache = ActiveSheet.Name
Workbooks(vSource).Close
Dim vDL11 As String
vDL11 = "DL11b_Verschillen_Modifica"
Sheets(vDL11).Select
'enlever les fusions de la feuille
ActiveSheet.Cells.Select
Selection.UnMerge
'insérer 4 colonnes avant la colonne H
ActiveSheet.Range("D").Select
For i = 1 To 4
Selection.Insert Shift:=xlToRight
Next
With ActiveSheet.Range("D:G")
.ColumnWidth = 7
End With
'nommer les colonnes
ActiveSheet.Range("D6").Value = "Old"
ActiveSheet.Range("E6").Value = "New"
ActiveSheet.Range("F6").Value = "Retenir"
ActiveSheet.Range("G6").Value = "Change"
'insérer les formules
ActiveSheet.Range("D7").Formula = "=SI(GAUCHE(J7,3)=""KrZ"",""S""&DROITE(J7,3),DROITE(J7,3))"
ActiveSheet.Range("E7").Formula = "=SI(GAUCHE(J7,3)=""KrZ"",""S""&DROITE(J7,3),DROITE(J7,3))"
ActiveSheet.Range("F7").Formula = "=IF(AND(C7=C6,J7=J6,K7=K6),""non"",""oui"")"
ActiveSheet.Range("G7").Formula = "=IF(AND(F7=""oui"",D7<>E7),""oui"",""non"")"
'recopier les formules
Dim vEnd As Integer
vEnd = ActiveSheet.Range("A99999").End(xlUp).Row
ActiveSheet.Range("D7:G7").Copy
ActiveSheet.Range("D8:G" & vEnd).PasteSpecial Paste:=xlPasteFormulas
'Filtrer les lignes
ActiveSheet.Range("A6:L" & vEnd).Select
Selection.AutoFilter Field:=7, Criteria1:="oui"
'copier coller sélection dans GEO
Sheets("GEO").Select
Range("E:I").ClearContents
Sheets(vDL11).Range("A6:E" & vEnd).Copy
Sheets("GEO").Range("E1").PasteSpecial Paste:=xlPasteValues
'supprimer les "0" des données en H et I
For i = 8 To 9 'colonnes H et I
For j = 2 To Cells(Rows.Count, i).End(xlUp).Row
'If Not Cells(j, i).Value = "" Then Cells(j, i).Value = CLng(Cells(j, i).Value)
Next
Next
'réinsérer les formules en colonne B et C.
Dim vDer As Integer
vDer = Range("A999").End(xlUp).Row
Range("B2").Formula = "=COUNTIF(I:I,A2)"
Range("C2").Formula = "=IF(B2=0,1,2)"
Range("B2:C2").Copy
Range("B3:C" & vDer).PasteSpecial Paste:=xlPasteFormulas
Range("J2").Delete
Sheets("DL11b_Verschillen_Modifica").Select
ActiveWindow.SelectedSheets.Visible = False
Application.Wait (Now + TimeValue("00:00:01"))
End Sub
*******************************
Les formules à introduire et à étirer sont en rouge ci-dessus.
Je cale vraiment sur ce point ... une idée?
Merci d'avance à tous et excellente journée
Je reviens vers vous pour un souci de format dans l'action de mon code VBA.
Celui-ci est censé coller une formule dans les cellules d'une colonne et l'étirer jusqu'au bout afin que le résultat s'affiche et puisse être filtré ensuite.
Je sais que la formule fonctionne parfaitement, ce qui cloche c'est que le code colle et étire la formule en tant que "texte" et non en tant que formule. Pourtant il est bien spécifié dans le code ".Formula".
Je vous mets le code:
****************************
Private Sub btnDL11_Click()
vCible = ActiveWorkbook.Name
ChDir ThisWorkbook.Path
Workbooks.Open Filename:=ThisWorkbook.Path & "\DL11b_Verschillen_Modifica.xlsx"
vSource = ActiveWorkbook.Name
Workbooks(vSource).Sheets("DL11b_Verschillen_Modifica").Copy Before:=Workbooks(vCible).Sheets("GEO")
vCache = ActiveSheet.Name
Workbooks(vSource).Close
Dim vDL11 As String
vDL11 = "DL11b_Verschillen_Modifica"
Sheets(vDL11).Select
'enlever les fusions de la feuille
ActiveSheet.Cells.Select
Selection.UnMerge
'insérer 4 colonnes avant la colonne H
ActiveSheet.Range("D").Select
For i = 1 To 4
Selection.Insert Shift:=xlToRight
Next
With ActiveSheet.Range("D:G")
.ColumnWidth = 7
End With
'nommer les colonnes
ActiveSheet.Range("D6").Value = "Old"
ActiveSheet.Range("E6").Value = "New"
ActiveSheet.Range("F6").Value = "Retenir"
ActiveSheet.Range("G6").Value = "Change"
'insérer les formules
ActiveSheet.Range("D7").Formula = "=SI(GAUCHE(J7,3)=""KrZ"",""S""&DROITE(J7,3),DROITE(J7,3))"
ActiveSheet.Range("E7").Formula = "=SI(GAUCHE(J7,3)=""KrZ"",""S""&DROITE(J7,3),DROITE(J7,3))"
ActiveSheet.Range("F7").Formula = "=IF(AND(C7=C6,J7=J6,K7=K6),""non"",""oui"")"
ActiveSheet.Range("G7").Formula = "=IF(AND(F7=""oui"",D7<>E7),""oui"",""non"")"
'recopier les formules
Dim vEnd As Integer
vEnd = ActiveSheet.Range("A99999").End(xlUp).Row
ActiveSheet.Range("D7:G7").Copy
ActiveSheet.Range("D8:G" & vEnd).PasteSpecial Paste:=xlPasteFormulas
'Filtrer les lignes
ActiveSheet.Range("A6:L" & vEnd).Select
Selection.AutoFilter Field:=7, Criteria1:="oui"
'copier coller sélection dans GEO
Sheets("GEO").Select
Range("E:I").ClearContents
Sheets(vDL11).Range("A6:E" & vEnd).Copy
Sheets("GEO").Range("E1").PasteSpecial Paste:=xlPasteValues
'supprimer les "0" des données en H et I
For i = 8 To 9 'colonnes H et I
For j = 2 To Cells(Rows.Count, i).End(xlUp).Row
'If Not Cells(j, i).Value = "" Then Cells(j, i).Value = CLng(Cells(j, i).Value)
Next
Next
'réinsérer les formules en colonne B et C.
Dim vDer As Integer
vDer = Range("A999").End(xlUp).Row
Range("B2").Formula = "=COUNTIF(I:I,A2)"
Range("C2").Formula = "=IF(B2=0,1,2)"
Range("B2:C2").Copy
Range("B3:C" & vDer).PasteSpecial Paste:=xlPasteFormulas
Range("J2").Delete
Sheets("DL11b_Verschillen_Modifica").Select
ActiveWindow.SelectedSheets.Visible = False
Application.Wait (Now + TimeValue("00:00:01"))
End Sub
*******************************
Les formules à introduire et à étirer sont en rouge ci-dessus.
Je cale vraiment sur ce point ... une idée?
Merci d'avance à tous et excellente journée