Formule Excel qui ne s'étire pas

Bertrand.d -  
Bertrand.dh Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis en train de développer une macro en VBA sur Excel. J'ai utilisé l'éditeur puis j'ai cleané le code et rajouté des commandes à la main.

Cependant, la formule Pos*Imp ne s'étire pas lors du lancement de la macro. La formule se met uniquement sur la première ligne et elle me rempli la colonne avec des 0.

Voici le code :
Sub KW()
'
' KW Macro
'
'
    ' Désactivation du Screen Refreshing
    Application.ScreenUpdating = False
    
    'Suppression des lignes indésirables
    Rows("1:5").Delete Shift:=xlUp
    
    ' Changement du nom des colonnes
    Range("K1").FormulaR1C1 = "CA"
    Range("I1").FormulaR1C1 = "Match Type"
    
    ' Ajustement de la taille des colonnes
    Cells.EntireColumn.AutoFit
    
    ' Sélection des données et création d'un tableau "Data"
    ActiveSheet.ListObjects.Add(xlSrcRange, Range(ActiveCell, Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)), , xlYes).Name = "Data"
    Range("Data[#All]").Select
    ActiveSheet.ListObjects("Data").TableStyle = "TableStyleLight16"
    
    ' Création des nouvelles colonnes avec formules
    Range("L1").FormulaR1C1 = "Pos*Imp"
    Range("L2").FormulaR1C1 = "=[@[Position moy.]]*[@Impressions]"
        
    Range("M1").FormulaR1C1 = "N° Semaine"
    Range("M2").FormulaR1C1 = "=ISOWEEKNUM([@Semaine])"
    
    Range("N1").FormulaR1C1 = "Année"
    Range("N2").FormulaR1C1 = "=YEAR([@Semaine])"
    
    ' Mise en force des valeurs des colonnes
    Range("Data[Impressions]").Select
    Selection.Style = "Comma"
    Selection.NumberFormat = "_-* #,##0 _€_-;-* #,##0 _€_-;_-* ""-""?? _€_-;_-@_-"
    
    Range("Data[Clics]").Select
    Selection.Style = "Comma"
    Selection.NumberFormat = "_-* #,##0 _€_-;-* #,##0 _€_-;_-* ""-""?? _€_-;_-@_-"
    
    Range("Data[Coût]").Select
    Selection.Style = "Currency"
    Selection.NumberFormat = "_-* #,##0 $_-;-* #,##0 $_-;_-* ""-""?? $_-;_-@_-"
    
    'Range("Data[Position moy.]").Select
    'Selection.Style = "Comma"
    'Selection.NumberFormat = "0.00"
    
    Range("Data[Conversions]").Select
    Selection.Style = "Comma"
    Selection.NumberFormat = "_-* #,##0 _€_-;-* #,##0 _€_-;_-* ""-""?? _€_-;_-@_-"
    
    Range("Data[CA]").Select
    Selection.Style = "Currency"
    Selection.NumberFormat = "_-* #,##0 $_-;-* #,##0 $_-;_-* ""-""?? $_-;_-@_-"

    'Range("Data[Pos*Imp]").Select
    'Selection.Style = "Comma"
    'Selection.NumberFormat = "0.00"
    
    ' Suppression de la dernière ligne du tableau
    Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).EntireRow.Delete



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

5 réponses

Bertrand.dh Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Après avoir placé des points d'arrêt dans le code, l'érreur semble venir des lignes 26/27. Je serais donc interéssé par une correction de ces lignes.

Merci d'avance.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Pour commencer si :Pos*Imp est une formule.... il ne faut pas oublier de mettre le "=" devant !

Range("L1").FormulaR1C1 = "=Pos*Imp"


Ensuite.. il est préférable d'utiliser le FormulaLocal au lieu du R1C1.
https://docs.microsoft.com/fr-fr/office/vba/api/excel.range.formulalocal?redirectedfrom=MSDN

0
Bertrand.dh Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Le ligne 26 correspond à la commande lorsque je défini le nom de la colonne, la ligne 27 correspond à la formule et le = est bien présent.
0
Bertrand.dh Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
up
0
Bertrand.dh Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
up
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Bonjour,

"cleaner" est un verbe français ?
Après ce cynisme, ça me paraît normal que la formule ne s'étire pas puisque rien dans le code ne permet de l'étirer, du genre :
Selection.AutoFill Destination:=Range("...."), Type:=xlFillDefault

En tout cas dans ce qui apparaît.
S'il y a des 0 c'est parce que tu indiques le format des cellules.

A+
0
Bertrand.dh Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse. Le problème était juste un caprice d'Excel. La macro marche de nouveau sans problème.

Ps : Pas besoin d'instructions pour étirer les formules puisque j'ai mis mes données dans un tableau. L' autofill est automatique dedans.
0