Erreur d'exécution 1004 "Erreur définie par l'application ou par l'objet"

Signaler
Messages postés
17
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
26 juin 2009
-
cs_wow59
Messages postés
17
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
26 juin 2009
-
Bonjour à tous,

Voilà j'ai une erreur d'exécution de type 1004 "Erreur définie par l'application ou par l'objet", elle se déoule lors de l'enregistrement de données sur une feuille Excel "Stock" caractérisé par stk dans le code. Voici la ligne où l'erreur est présente:

stk.Cells(iv, 3).Value = Now

Pourtant j'ai vérifié si le format de cellule était bien au bon format  (date et heure) et les feuilles ne sont plus protégées en écriture.
Je n'y comprend plus rien!

N'hésitez pas à poster des réponses!

Cordialement.

wow59

13 réponses

Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
salut,
iv est une chaine, prise ici comme une variable non déclarée
(penser à OPTION EXPLICIT en haut de chaque feuille de code, même en VBA)

essaye ("iv:3") ou ("iv, 3")
++
Messages postés
17
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
26 juin 2009

Bonjour,

Après avoir définit iv en single, j'ai une autre erreur, erreur de type 13 "Incompatibilité de type". Qu'en penses-tu PCPT ou même les autres? Faut-il que je décalre iv dans un autre type (j'ai déjà testé pour en entier et en chaîne mais rien)?

Cordialement.

wow59
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
Option Explicit


Private Sub 
CommandButton1_Click()




'  
feuille de travail

    Dim stk As Object
    Set stk = Sheets("Feuil1")

'   cellule de travail n°1
    Dim row As Integer, col As Integer
    row = 3   '3e ligne
    col = 256 'colonne IV

'   applique la
valeur désirée
    Dim c1 As Range
    Set c1 = stk.Cells(row, col)
    c1.Value = CStr(Now) & " par CELL"

'  

cellule de travail n°2



    Dim c2 As Range
    Set c2 = stk.Range("IV4") 'ligne en dessous
    c2.Value = CStr(Now) & " par
RANGE"
    
'   sélectionne visuellement la 2e
zone
    stk.Select
    c2.Activate

'  
nettoyage
    Set c2 = Nothing
    Set c1 = Nothing
    Set stk = Nothing
End Sub






<small>
[../code.aspx?ID=39466 Coloration VB6, VBA,
VBS]
</small>
Messages postés
17
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
26 juin 2009

Bonjour,

C'est quoi ce code, à quoi sert-il? Moi je veux juste savoir en quel type déclarer mon iv afin d'éviter l'erreur 13 dite d'incompatibilité de type? Cependant mon iv est déjà déclaré dans un module :

Option Explicit
Public ChargeLigne, Cancel, IAjout, IOK, InventaireEnCours  As Boolean
Public c As Range
Public i, iv, ist As Single
Public mvt, stk As Worksheet
Public WbStock As Workbook
Quelle est alors la solution?

Cordialement.

wow59
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
IV est la valeur de ta colonne
REGARDE LE CODE QUE J'AI MIS !!



Cells(row, col)



ou


Range(
"IV4"
)







ps : dim x, y as type
x n'est pas typée !


dim x as type, y as type
Messages postés
17
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
26 juin 2009

Bonjour,

DSL mais je ne comprend rien à ce que tu veut m'expliquer. Peut-tu me redonner tes explications STP si ce n'est pas trop abuser de ta gentillesse.

Merci d'avance.

Cordialement.

wow59
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
les redonner?
faire un copier coller de ce que j'ai écrit au dessus?.....

LA CHAINE "IV" représente le nom de ta 256e colonne

donc si vraiment tu veux une variable....., le code ci-dessus indique :





'   cellule de travail n°1

    Dim row As Integer, col As Integer
    row = 3   '3e ligne
    col = 256 'colonne IV









donc???

dim iv as integer
iv = 256

stk.Cells(3, iv).Value = Now






c'était dur, de lire !!
Messages postés
17
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
26 juin 2009

Bonjour,

DSL mais je crois que tu te trompes, iv n'est pas la valeur de la dernière colone d'Excel (je crois), regarde la déclaration de iv dans le module:
Option Explicit
Public ChargeLigne, Cancel, IAjout, IOK, InventaireEnCours  As Boolean
Public c As Range
Public i, iv, ist As Single

Public mvt, stk As Worksheet
Public WbStock As Workbook

Dans mon cas (là je suis sure), iv réprésente le numéro de la ligne et non la colone comme tu affirme regarde pour l'enregistrement:
stk.Cells(iv, 3).Value = Now  <------ Met dans la feuille Stock du classeur, à la 3ème colone la date et l'heure du mouvement (Now)

Cependant le code écrit comme ceci m'affiche une erreur d'incompatibilité de type (13). Cela veut dire qu'il y a des variables non compatibles, voilà maintenant ma vraie question: Comment résoudre ce problème???

Cordialement.

wow59

PS: PCPT j'espère que maintenant tu comprends mieux mon problème!
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
mêmes réponses :

*tu n'as pas typé iv, c'est un variant
(regarde ma réponse PS de 15h57)

*les lignes sont des nombres, les colonnes des chaînes. tu as inversé les 2

(regarde ma réponse en rouge de 16h35)




ps :


DSL mais je crois que tu te trompes, iv n'est pas la valeur de la dernière colone d'Excel



oui et? je n'ai jamais dit que c'était la dernière colonne!!! déjà que tu ne lis pas mes réponses, tu n'es pas non plus obligé de m'en inventer....

j'ai déjà répondu à ta "vraie question", sur un plateau doré à 16h35.
bonne continuation
Messages postés
17
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
26 juin 2009

Bonjour,

OK pour la déclaration de la variable, c'est bon j'ai compris.

Maintenant concernant les "Cells" je crois bien que j'ai raison, ce sont les lignes puis la colone donc Cells(ligne, colone), dans mon projet Cells(iv,
3), iv étant le n° de ma ligne.

De toute façon en essayant les 2 j'arrive à la même erreur: Erreur d'exécution 1004 "Erreur définie par l'application ou par l'objet"

Je vais essyer la syntaxe que tu m'avais posté à 10h58!


Cordialement.


wow59
Messages postés
17
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
26 juin 2009

Bonjour,

Alors je viens de tester avec tes possibilités alors là un message d'erreur mais pas le même que celui d'avant: Erreur 13 "Incompatibilité de type".

Alors là vois-tu une solution?

Cordialement.

wow59
Messages postés
22
Date d'inscription
mardi 23 janvier 2007
Statut
Membre
Dernière intervention
31 mars 2010

Bonjour,



Au moment où tu as l'erreur (sur la ligne stk.Cells(iv, 3).Value = Now), quelle est la valeur de ta variable iv ?
Messages postés
17
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
26 juin 2009

Bonjour,

Tout au début du programme, la valeur de iv est à 2 comme le montre le code ci-dessous :

iv = 2
Do Until IsEmpty(stk.Cells(iv, 1))
    If IOK = True Then
        InventaireUF.ZeroI.Value = False
        InventaireUF.ComboBox.Value = stk.Cells(iv, 1).Value
        InventaireUF.Stock.Caption = Format(stk.Cells(iv, 8).Value, "0.000")
        InventaireUF.PMP.Caption = Format(stk.Cells(iv, 10).Value, "0.000")
    End If
InventaireUF.Designation.Enabled = False
InventaireUF.Article.Enabled = False
InventaireUF.ShowIf IOK True Then iv iv + 1
Loop

Mais normalement iv est censé représenter le n° de la ligne en focntion d'un article choisit.

C'est pour cela, je ne comprend plus rien!

Cordialement.

wow59