Erreur 1004 sur Simple Range.Value = String

Bonjour,

Je viens tout juste de commencer à coder en VBA sur Excel donc je suis loin d'être efficace dans mon code/ma syntaxe.

Le bout de code qui me pose problème est une simple attribution de valeur à une case de ma 1ère feuille, la valeur étant un String d'une formule Excel mais que je veux attribué en tant que Texte (String) d'abord comme un test pour moi puis ensuite en tant que Formule dans une autre cellule:

Dim rcell As Integer Dim nrcell As Integer Dim i As Integer Dim plg As Range Dim rplg As Integer Dim speccell As Range Dim n As Integer

Dim mfonc As String

Set wsa = ActiveWorkbook.Sheets(1)

 Set wsb = ActiveWorkbook.Sheets(2)

 ActiveCell.Select

 rcell = Selection.Row

 nrcell = Selection.Rows.Count

 wsa.Activate

 wsa.Select

 Set plg = Application.InputBox _ ("Sélectionner la Cellule/Ligne qui sera juste au-dessus de votre nouvelle Ligne", , , , , , , 8) rplg = plg.Row + 1

'Ensuite on a un If Then [...] Else mon problème étant dans le Else dans un 1er temps

Else

wsa.Activa 

wsa.Select

 ActiveSheet.Rows(rplg).Insert Shift:=xlShiftDown

 ActiveSheet.Rows(22).Select

 Selection.Copy

 ActiveSheet.Rows(rplg).Select

 ActiveSheet.Paste

 Application.CutCopyMode = False

 ActiveSheet.Rows(rplg).ClearContents

 mfonc = "=HLOOKUP($AK$1;'Versions-Projets'!$D$1:$S$105;" & rcell & ";FALSE)"

 wsa.Range("$K$60").Value = mfonc

'ERREUR 1004 LIGNE DU DESSUS

 wsa.Cells(rplg, 4).Formula = mfonc

 wsa.Cells(rplg, 2).Value = Sheets(2).Cells(rcell, 3).Value

 wsa.Cells(rplg, 1).Value = Sheets(2).Cells(rcell, 2).Value

 End If

Donc J'obtiens l'erreur 1004 : erreur définie par l'application ou par l'objet.

J'ai TOUT ESSAYE, les syntaxes les plus fantaisistes, je suis un peu perdu ...

Merci d'avance

Bonjour,

remplacer les ";" de mfonc par des ","

Bonjour,

Difficile d'aider sans l'entièreté de la macro. Cependant un test fonctionnel chez moi en ayant attribué des valeurs fictives pour rcell et rplg :

Sub FORM()
Dim rcell As Integer, nrcell As Integer, i As Integer, plg As Range, rplg As Integer, speccell As Range, n As Integer
Dim mfonc As String
Dim wsa As Object
Set wsa = ActiveWorkbook.Sheets(1)
With wsa
    rcell = 2
    rplg = 25
    .Rows(rplg).Insert Shift:=xlShiftDown
   .Rows(22).Copy wsa.Rows(rplg)
    .Rows(rplg).ClearContents
    mfonc = "=HLOOKUP($AK$1,'Versions-Projets'!$D$1:$S$105," & rcell & ",FALSE)"
    [K60] = mfonc
    .Cells(rplg, 4).Formula = mfonc
End With
End Sub

A noter que sur les formules en anglais on remplace les points virgules par des virgules.

Cdlt,

Salut

Aga25 a écrit : mais que je veux attribué en tant que Texte (String) d'abord comme un test pour moi puis

l erreur 1004 se produit car ceci ne passe pas une valeur texte a mfonc !?

mfonc = "=HLOOKUP($AK$1;'Versions-Projets'!$D$1:$S$105;" & rcell & ";FALSE)"

@Thev: Super, merci ! J'essayerai demain matin, n'ayant pas le classeur en question sur mon PC Perso

@Ergotamine: Okay, parfait alors, merci bien ! De plus j'apprends de vous une nouvelle syntaxe pour .Copy et la le .Range

@AMIR: Si vous faites allusion aux ";" au lieu des "," je comprend. Sinon, j'ai bien déclarer mfonc As String, donc mfonc = <String> devrait fonctionner non ? Et pour le .Formula=mfonc qui vient après aussi non ?

Bonjour,

Non AMIR a raison. Lorsque vous renseignez = quelque chose, même sans indiquer .formula, alors la valeur rentrée est considérée comme une formule.

Si vous souhaitez l'afficher comme du texte il faut faire comme lorsque l'on travaille sous EXCEL, insérer un apostrophe devant le = soit '=.

Donc en résumé :

Sub TEST 
mfonc = "=HLOOKUP($AK$1,'Versions-Projets'!$D$1:$S$105," & rcell & ",FALSE)"
[K60] = "'" & mfonc 'Affiche en texte mais en anglais
.Cells(rplg, 4).Formula = mfonc 'Affiche en formule mais en français
.Cells(rplg, 4) = mfonc 'Affiche en formule mais en français
End Sub

En espérant que cela soit clair pour vous.

Cdlt,

Edit : Après il est aussi utile d'utiliser la console pour afficher le résultat (en anglais je crois) :

Debug.Print mfonc

Bonjour,

Cela fonctionne parfaitement de mon coté désormais !

Un grand merci à vous tous pour votre précieuse aide !

Rechercher des sujets similaires à "erreur 1004 simple range value string"