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

Problème en VBA : le code n'en fait qu'à sa tête !

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bartimeus65

XLDnaute Nouveau
Bonjour à tous. J'ai un soucis pour un code VBA sur Excel. Voici la ligne en question :

Code:
Range("J2").FormulaR1C1 = "=(1+" & (pla_cut / 100) & ")*(1+" & (pla_cont / 100) & ")"

"pla_cut" et "plan_cont" sont définis plus haut, et ont respectivement pour valeur 20 et 35. Je devrais donc avoir normalement "1.62" dans la cellule J2...


En théorie, cette formule marche (je l'ai testé sur plusieurs PCs)... alors pourquoi juste sur mon PC, la macro buggue dessus, et me met une "Erreur d'execution '1004': erreur definie par l'application ou par l'objet" ????



J'ai fait quelques tests en remplacant "FormulaR1R1" par "Value", mais j'ai le même problème. Toutes mes lignes contenant cette formule stoppent la macro, et m'envoient ce message d'erreur. Comme écrit plus haut, j'ai fait fonctionner la macro sur d'autres PCs, et ça passe nickel..


Je me suis apercu que ce problème venait peut-être du fait que les formules "(pla_cut / 100)" et "(pla_cont / 100)" donnaient des nombres entre 0 et 1... Bingo ! Si je remplace "pla_cut" et "pla_cont" par des nombres supérieurs ou égaux à 100, la ligne passe nickel... si l'une des deux variables passe en dessous de 100... bug !


J'ai un processeur Intel Core 2 avec 3 Go de RAM...




Un idée sur cette saute d'humeur d'Excel ?????
Merci d'avance de vos réponses 🙂
 
Dernière édition:
Re : Problème en VBA : le code n'en fait qu'à sa tête !

bonjour

et comme ceci

Code:
Sub test()
Range("J2").FormulaR1C1 = "=(1+(pla_cut / 100)) * (1+(pla_cont / 100)) "
'Range("J2").FormulaR1C1 = "=(1+" & (pla_cut / 100) & ")*(1+" & (pla_cont / 100) & ")"
End Sub
😱

chez moi je trouve bien le resultat avec ma formule et bloque avec la votre "erreur 1004"
 
Dernière édition:
Re : Problème en VBA : le code n'en fait qu'à sa tête !

Etant donné que je cherche à faire une formule avec seulement des nombres, cette ligne me donne une opération avec en guise de variable le nom de mes variables, et non pas leur valeur. Ce code ne fonctionne pas.

Le soucis ne vient pas du code, mais d'autre chose sur mon PC... des fichiers cachés générés lors du fonctionnement de la macro ? des temporary files ???
 
Re : Problème en VBA : le code n'en fait qu'à sa tête !

Bonsoir à tous
Ce qui n'est pas clair là-dedans, c'est sont définis pla_cut et pla_cont.
Si ces noms sont ceux de cellules nommées, la solution de gilbert_RGI fonctionne parfaitement.
Si ces noms sont ceux de variables définies dans la procédure,
Code:
[B][COLOR="DarkSlateGray"]
Sub test2()
pla_cut = 20
pla_cont = 35
Range("J2").FormulaR1C1 = "=(1+" & pla_cut & "/100)*(1+" & pla_cont & "/100)"
End Sub[/COLOR][/B]
fonctionne parfaitement.

Mais la formule donnée dans le message #1
Code:
[COLOR="DarkSlateGray"][B]Sub test3()
pla_cut = 20
pla_cont = 35
[COLOR="Sienna"]Range("J2").FormulaR1C1 = "=(1+" & (pla_cut / 100) & ")*(1+" & (pla_cont / 100) & ")"[/COLOR]
End Sub[/B][/COLOR]
ne fonctionne pas...
ROGER2327
#3136
 
Re : Problème en VBA : le code n'en fait qu'à sa tête !

Mes variables sont définies dans la procédure avec "Public" (la macro fait quelques chose comme 3000 lignes dans son ensemble...).

Le premier code de ROGER2327 fonctionne bien, je te remercie... mais je ne m'explique pas pourquoi le code marche sur certains PC et pas sur d'autres... Si le coeur vous en dit... 😉

Merci à tous de vous être penché sur mon problème 🙂
 
Dernière édition:
Re : Problème en VBA : le code n'en fait qu'à sa tête !

Désolé pour le double post, mais je me retrouve encore avec un gros soucis. Mon PC est maudit, c'est sur...

J'ai encore une fois un problème de macro, un bout de code qui fonctionne bien sur certains PCs, mais pas sur le mien... Oo

Voila le code en question:

Code:
'supprime les espaces dans toutes les colonnes
Dim i
Dim j
For i = 2 To 12
    For j = 1 To fin_1
        Cells(j, i).Value = RTrim(LTrim(Cells(j, i).Text))
    Next j
Next i


Ce bout de macro me permet d'épurer les colonnes B à L sur un certain nombre de ligne en supprimant les espaces situés à droite et à gauche des caractères de la cellule. Le "fin_1" est une variable définie dans la procédure (et non vide).

En fait, ce bout de code épure tellement bien... qu'il va jusqu'à me supprimer les virgules si la valeur de la cellule a 3 décimales ou plus... Avec 1 ou 2 décimales, ça marche, avec 3, il me supprime la virgule... merci VBA de tout me multiplier par 1000 😀


Comme mon précédent problème... cela n'arrive que sur ma machine ! J'ai bien tenter de faire l'épurage en deux parties :

Code:
Dim i
Dim j
For i = 2 To 12
    For j = 1 To fin_1
        Cells(j, i).Value = LTrim(Cells(j, i).Text)
        Cells(j, i).Value = RTrim(Cells(j, i).Text)
    Next j
Next i

ou bien en remplacant "Text" par "Value", mais il n'est quand même pas d'accord, et me supprime ma virgule...

Une idée ? 🙂
 
Re : Problème en VBA : le code n'en fait qu'à sa tête !

Bonjour le fil,

bartimeus65, pourquoi être venu poster dans ce groupe de discussion 😕

Le forum Excel, tu ne l'as pas vu 😉😀

Problème de paramètres régionaux, je suppose ...
Panneau de configuration -> paramètres régionaux
A vérifier sur les 2 postes

A+
 
Dernière modification par un modérateur:
Re : Problème en VBA : le code n'en fait qu'à sa tête !

BrunoM45 à dit:
bartimeus65, pourquoi être venu poster dans ce groupe de discussion 😕

Disons que comme mon problème concerne VBA, je pense que le sujet avait plus sa place ici, mais je peux me tromper 😀

Et concernant les paramètres régionaux, ce sont les mêmes sur tous les postes testés... 😉
 
Re : Problème en VBA : le code n'en fait qu'à sa tête !

J'ai mis cette ligne dans mon code :

Code:
Sub test2()
    pla_cut = 35
    pla_cont = 20
    Range("J2").FormulaR1C1 = "=(1+" & pla_cut & "/100)*(1+" & pla_cont & "/100)"
End Sub

... et cela fonctionne sur tous les postes sans problèmes 😉

Maintenant, mon gros soucis, c'est cette virgule qui se fait la malle...😀
 
Re : Problème en VBA : le code n'en fait qu'à sa tête !

Salut Martimeus65,

Peut-être comme ça
Code:
Sub test2()
    Pla_Cut = 35
    Pla_Cont = 20
    With Range("J2")
      .FormulaR1C1 = "=(1+" & Pla_Cut & "/100)*(1+" & Pla_Cont & "/100)"
      .NumberFormat = "0.00"
    End With
End Sub

A+
 
Re : Problème en VBA : le code n'en fait qu'à sa tête !

Merci bruno, mais mon problème est tout autre 🙁 (il est completement différent de mon précédent problème, mise à part le fait que mon code fonctionne sur certaines machines et pas sur d'autres 😉)

A l'origine, j'importe un fichier bloc donné par un logiciel de conception. Ce fichier bloc est importé par une macro dans un fichier excel. Le soucis est que ce fichier est assez moche quand il est importé, c'est à dire que pratiquement toutes les cellules sont emplies d'espace avant et après la chaine de caractères que je désire. par exemple, au lieu d'avoir "UPN200" dans une cellule, je vais trouver " UPN200 "

J'utilise donc le code
Code:
'supprime les espaces dans toutes les colonnes
Dim i
Dim j
For i = 2 To 12
    For j = 1 To fin_1
        Cells(j, i).Value = RTrim(LTrim(Cells(j, i).Text))
    Next j
Next i

Pour supprimer tous les espaces en rabiot lors de l'importation...

Et quand j'utilise ce code, si dans ma cellule j'ai, entre les espaces parasites, un nombre comportant 3 chiffres après la virgule, ce code me supprime bel et bien mes espaces, mais me supprime également la virgule de mon nombre...

Ce soucis n'est rencontré que sur certaines machines... autant vous dire que je me creuse la tête pour trouver une solution, mais un code qui marche sur un PC et pas sur un autre... c'est pas dans mon domaine de connaissance 😀
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

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