Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Formule collée en tant que texte dans un code

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
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Bonjour luke,

dans les 2 premières lignes, j'ai retraduit en anglais

ActiveSheet.Range("D7").Formula = "=IF(LEFT(J7,3)=""KrZ"",""S""&RIGHT(J7,3),RIGHT(J7,3))"
ActiveSheet.Range("E7").Formula = "=IF(LEFT(J7,3)=""KrZ"",""S""&RIGHT(J7,3),RIGHT(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"")"

à+
Philippe
 

luke3300

XLDnaute Impliqué
Bonjour Philippe,

Merci pour ton aide.
Ceci dit, le souci n'est pas là je pense puisque la formule qu'elle soit en FR ou en EN, cela ne change malheureusement rien

Je n'y comprend rien et quand je clique avec le bouton droit de la souris sur une des cellules dans lesquelles il a copié les formules, elle est en format "texte" ... pourquoi? I don't no ...
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re,

Ceci dit, le souci n'est pas là je pense puisque la formule qu'elle soit en FR ou en EN, cela ne change malheureusement rien

après avoir construit une partie de la feuille et activé ton code (en rouge) , les cellules concernées par les deux premières lignes de code affichaient l'erreur #NOM

après les avoir traduit en anglais et relancé le code, l'erreur n'est plus apparue

Peut-être un coup de bol mais je n'ai pas d'autre solution

à+
Philippe
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je présume qu'il se passe la même chose que si on valide une formule dans une cellule préalablement munie d'un format Texte. Il réagit comme si on voulait indiquer, pour documenter le classeur, le texte de la formule de la cellule à sa gauche, par exemple.
 

luke3300

XLDnaute Impliqué
D'après ce que je comprend, la macro copie une feuille extérieure dans mon classeur et dont les cellules contiennent des données au format texte. Ensuite elle insère dans la feuille copiée 4 colonnes et à mon avis, les 4 colonnes ajoutées sont aussi au format texte puisque le reste de la feuille y est ...
 

luke3300

XLDnaute Impliqué
Ben voilà, en ajoutant: " ActiveSheet.Range("D:G").NumberFormat = "General" " avant les formules, le problème est réglé
Merci à vous d'avoir pris du temps pour m'aider et bonne journée.
 

Discussions similaires

Réponses
7
Affichages
590
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…