Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion Pachi
  • Date de début Date de début

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 !

P

Pachi

Guest
Bonjour voila je comprends pas a chaque fois que je lance ma macro
il me met ce message d'erreur : Application-defined or object-defined error
Et bloque sur cet ligne : If Cells(f, 1) = Range("A9") Then
Es-ce que ma ligne est mal écrite ou alors faut t'il faire une déclaration de cellule avant.
J'avoue je bloque ca me plante mon programme.
Merci d'avance pour votre aide.
Si cela ne vous aide pas demander moi ce qu'il vous faut pour mieux m'expliquer merci bcp
 
Re : Help me ^^

Je declare f = 13
et avec une boucle je fais un f=f+1 pour trouver la bonne ligne dans mon tableau.
Faut t'il que je declare f avec un dim ?
et si je le declare il me met overflow
Rhhaa je suis perdu la!
 
Re : Help me ^^

Bonjour à tous

Quand on parle de declarer, ce n'est pas initialiser

Dim f as long ' est une declaration de variable
f = 13 est une initialisation de variable

quand on utilise une variable pour simuler un n° de ligne, il faut faire attention au differentes limites

F = 13 ' declare implicitement une variable entier court (en esperant que ce ne soit pas un byte)

Le nombre de lignes pour les vervions excel avant 2007, c'est 65536, oe une declaration en entier simple ne permet que la moitié, et une declaration en Byte une valeur maxi de 255

je ne sais pas combien de lignes tu cherches à traiter, mais personnellement, quand je travaille sur des ligne, je declare toujours en Long soit Dim f as long
 
Re : Help me ^^

Ok voici ma macro je ne peux pas envoyer le fichier ziper il est trop gros desoler
J'espere que ca va pouvoir vous aidé car je bloque vraiment la sur :

Sub Macro5()

f = 13
Do
f = f + 1

If Cells(f, 1) = Range("A9") Then
Exit Do
End If
Loop
If Range("B9") = "" Then
Cells(f, 2) = Cells(f, 2)
Else
Cells(f, 2) = Range("B9")
End If
If Range("C9") = "" Then
Cells(f, 3) = Cells(f, 3)
Else
Cells(f, 3) = Range("C9")
End If
If Range("D9") = "" Then
Cells(f, 4) = Cells(f, 4)
Else
Cells(f, 4) = Range("D9")
End If
End sub
 
Re : Help me ^^

Bonjour,

Dites, personne n'a penser que cells et range demandaient une propriété derrière ?

Je ne sais pas, par exemple .value, non ?

ce qui donne
Code:
cells(f,1).value = range("A9").value

Cordialement,
Thomas
 
Re : Help me ^^

Bonjour le fil, bonjour le forum,

La propriété Value est la propriété par défaut un objet Range. Il n'est donc pas obligatoire de l'écrire même si je pense qu'il est préférable de le faire. Sinon désolé mais je n'ai pas de solution pour ce problème.
 
Re : Help me ^^

Re le fil, bonjour Robert

Ah ? je pensais qu'il n'aimait pas ça.
Autant pour moi.

Dans ce cas, je rejoins Skoobi sur ce qu'il (ou elle) disait sur la condition de sortie

Donc ce serait plutôt
Code:
do until cells(f,1).value = range("A9").value or f = 65536
...
f = f +1
loop

ou bien

do while cells(f,1).value <> range("A9").value or f < 65536
...
f = f +1
loop

de plus, je définirais f en tant que long AVANT la boucle, mais ça, c'est optionnel.

Mais si le problème n'est pas là, je sèche

Thomas
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

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