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

Ma macro fonctionnait et maintenant erreur 1004

morinn

XLDnaute Nouveau

J'ai fait une macro pour venir en aide à une collègue et elle fonctionnait jusqu'à maintenant.
Ce soir je l'ouvre pour la peaufiner et là je la lance et il me dit erreur 1004 dès le début du lancement.

Voici le début de ma macro
Code:
Sub Calcul()
Dim DD As Date, TB, Resultat As Single

a = 2
b = 2




Calcul1:
If b > 20 Then
a = a + 1
b = 2
GoTo Calcul1
End If
Cells(a, b).Select
'Vérifie si la cellule est vide
'Si elle est vide vérifie la cellule suivante
If IsEmpty(Cells(a, b)) Then
b = b + 1

GoTo Calcul1
End If

J'ai rajouté lors de mon travail précédent le
Code:
Dim DD As Date, TB, Resultat As Single
et je crois que c'est à cause de ça que ça zappe.
Code:
Cells(a, b).Select
C'est ici que ça bloque
Je sollicite donc votre avis et vous remercie par avance.




Edit : J'ai oublié de préciser que quand je fais F8 pour faire du pas à pas, la macro fais un tour (à la fin de celle-ci sous certaines conditions je reviens à Calcul1) et l'erreur se produit au second tour.
Si je clique sur le bouton dédié au lancement de la macro l'eereur se produit immédiatement.
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Ma macro fonctionnait et maintenant erreur 1004

Bonsoir Morinn

1) lorsque tu codes, mets : OPTION EXPLICIT au début de tes modules
et défini toutes tes variables

2) Au lieu de faire un Goto, regarde un peu du côté de la boucle Do ... Loop

3) A quoi te sert ce code !?

A+
 

morinn

XLDnaute Nouveau
Re : Ma macro fonctionnait et maintenant erreur 1004

Alors je suis un bidouilleur, je farfouille le net pour arriver à mes fins, donc déjà merci de faire avancer mon expertise. Je vais aller regarder "do loop" comme tu me le suggères.

Pour ce qui est du code.
J'ai un tableau avec des horaires de personnel pour une journée. La feuille sert à faire le nombre d'heures travaillées pour chaque personnel.
Par exemple pour lundi je vais avoir B qui travaille de 9h à 16h , J de 16h45 à 22h etc...
Tu veux tout savoir ou c'est juste par curiosité.

Là je n'ai mis que le début du code.

Pour la déclaration de variable ici a et b sont des "integer" ou des variant ? ou autres d'ailleurs ? sur ce point je me trompes souvent

Encore merci
 

laurent950

XLDnaute Barbatruc
Re : Ma macro fonctionnait et maintenant erreur 1004

Bonsoir Morin,

j'ai tester votre code qui fonctionne chez moi ? il n'y a pas de plantage au niveau de l'istruction. cela dit c'est pas trés propre?

Vous avez le fichier pour test

laurent
 

morinn

XLDnaute Nouveau
Re : Ma macro fonctionnait et maintenant erreur 1004

Bonsoir Laurent, comme je le disais je suis un bidouilleur. Donc oui je sais ce n'est pas très propre.
Je perds du temps car je bidouille alors que je pourrais faire simple mais je progresse petit à petit comme avec l'instruction do loop donné ci dessus.
J'ai appris un truc nouveau

Mon fichier

Attention les experts vont trouver que c'est le bordel
 

laurent950

XLDnaute Barbatruc
Re : Ma macro fonctionnait et maintenant erreur 1004

Si tu place juste sous calcul11
b=2

Calcul1:
b=2
If b > 20 Then
a = a + 1
b = 2
GoTo Calcul1

tu decharge b a la fin = b= ini

je sais pas trop le but de votre macro mais
la condition if peux pas tester sur rien car b= "" c'est pour cela qu je dit si b=2 juste avant la condition if

peut être la solution.

laurent
 

morinn

XLDnaute Nouveau
Re : Ma macro fonctionnait et maintenant erreur 1004

Merci beaucoup Laurent de m'avoir fait progresser.
J'ai remis
Code:
If IsEmpty(Cells(a, b)) Then
f = a
g = b - 1
If Not IsEmpty(Cells(a, 2)) And b > init Then
init = b
GoTo Calcul3
End If
End If

If Not IsEmpty(Cells(a, 2)) Then
init = b
GoTo Calcul4
End If

If Not IsEmpty(Cells(a, 12)) And IsEmpty(Cells(a, 11)) Then
init = b
GoTo Calcul5
End If
init = b

Au lieu de
Code:
If IsEmpty(Cells(a, b)) Then
f = a
g = b - 1
If Not IsEmpty(Cells(a, 2)) And b > init Then GoTo Calcul3
If Not IsEmpty(Cells(a, 2)) Then GoTo Calcul4
If Not IsEmpty(Cells(a, 12)) And IsEmpty(Cells(a, 11)) Then GoTo Calcul5
End If
init = b

Et là ça passe.

Merci
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…