Macro qui ne fonctionne qu'une fois
Résolu
idro6
Messages postés
13
Statut
Membre
-
idro6 Messages postés 13 Statut Membre -
idro6 Messages postés 13 Statut Membre -
Bonjour, débutant en VBA, j'ai réalisé un classeur qui me permet de gérer des données sur des clients et d'afficher des tableau selon plusieurs critères comme la facturation par exemple. Tout fonctionne, mais afin de permettre un affichage des tableau plus propre j'ai ajouté une macro qui se lance à l'activation de la feuille qui va réinitialiser les données, chercher les modifications selon les nouveaux clients ajoutés ou supprimés et les réinscrire dans le tableau. Jusqu'ici tout va bien. En même temps que le tableau se rempli les bordures sont rajouté afin d'avoir des bordures qui concorde avec les dimensions du tableau. Le programme s'exécute correctement mais dès que je clique sur un bouton qui me permet de changer de feuille ou un simple clic sur un bouton présent sur la feuille où se trouve le tableau la macro ne fonctionne plus et le message suivant apparaît:
Erreur d'exécution '1004': Impossible de définir la propriété Value de la classe Borders.
Alors que si je change de feuille grâce au menu se trouvant en bas il n'y a pas de problème, tout fonctionne. Lancer une macro sur une autre feuille ne fait pas bugger non plus. Or en allant dans la première cellule du tableau et en déverrouillant manuellement la cellule le programme fonctionne à nouveau ou en enregistrant et en rouvrant le tableur cela fonctionne à nouveau.
Je cherche des solutions à ce problème en espérant obtenir des réponses, voici mon programme:
Cordialement
Thomas
Erreur d'exécution '1004': Impossible de définir la propriété Value de la classe Borders.
Alors que si je change de feuille grâce au menu se trouvant en bas il n'y a pas de problème, tout fonctionne. Lancer une macro sur une autre feuille ne fait pas bugger non plus. Or en allant dans la première cellule du tableau et en déverrouillant manuellement la cellule le programme fonctionne à nouveau ou en enregistrant et en rouvrant le tableur cela fonctionne à nouveau.
Je cherche des solutions à ce problème en espérant obtenir des réponses, voici mon programme:
Private Sub Worksheet_Activate() Range("A4:F203").Borders.Value = 0 Dim i As Integer Dim j As Integer i = 7 j = 4 Sheets("Tableau = Tous les devis").Range("A4:F203").Clear Do Until i = 206 If Sheets("Devis réalisés").Cells(i, 2) <> "" Then Sheets("Tableau = Tous les devis").Cells(j, 1) = Sheets("Devis réalisés").Cells(i, 1).Value Sheets("Tableau = Tous les devis").Cells(j, 2) = Sheets("Devis réalisés").Cells(i, 2).Value Sheets("Tableau = Tous les devis").Cells(j, 3) = Sheets("Devis réalisés").Cells(i, 3).Value Sheets("Tableau = Tous les devis").Cells(j, 4) = Sheets("Devis réalisés").Cells(i, 5).Value Sheets("Tableau = Tous les devis").Cells(j, 5) = Sheets("!").Cells(i, 26) Sheets("Tableau = Tous les devis").Cells(j, 6) = Sheets("Devis réalisés").Cells(i, 8) Range(Cells(j, 1), Cells(j, 1)).Borders.Value = 1 Range(Cells(j, 2), Cells(j, 2)).Borders.Value = 1 Range(Cells(j, 3), Cells(j, 3)).Borders.Value = 1 Range(Cells(j, 4), Cells(j, 4)).Borders.Value = 1 Range(Cells(j, 5), Cells(j, 5)).Borders.Value = 1 Range(Cells(j, 6), Cells(j, 6)).Borders.Value = 1 i = i + 1 j = j + 1 Else: i = i + 1 End If Loop End Sub
Cordialement
Thomas
A voir également:
- Macro qui ne fonctionne qu'une fois
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Signe fois clavier iphone ✓ - Forum Word
- Paiement 4 fois cdiscount impossible ✓ - Forum Consommation & Internet
11 réponses
Bonjour à tous
peut-être un problème de référencement des range ou cells par rapport à la feuille.
à tester
A+
peut-être un problème de référencement des range ou cells par rapport à la feuille.
à tester
....
With Sheets("Tableau = Tous les devis")
.Range("A4:F203").Clear
Do Until i = 206
If Sheets("Devis réalisés").Cells(i, 2) <> "" Then
.Cells(j, 1) = Sheets("Devis réalisés").Cells(i, 1).Value
.Cells(j, 2) = Sheets("Devis réalisés").Cells(i, 2).Value
.Cells(j, 3) = Sheets("Devis réalisés").Cells(i, 3).Value
.Cells(j, 4) = Sheets("Devis réalisés").Cells(i, 5).Value
.Cells(j, 5) = Sheets("!").Cells(i, 26)
.Cells(j, 6) = Sheets("Devis réalisés").Cells(i, 8)
Range(.Cells(j, 1), .Cells(j, 1)).Borders.Value = 1
Range(.Cells(j, 2), .Cells(j, 2)).Borders.Value = 1
Range(.Cells(j, 3), .Cells(j, 3)).Borders.Value = 1
Range(.Cells(j, 4), .Cells(j, 4)).Borders.Value = 1
Range(.Cells(j, 5), .Cells(j, 5)).Borders.Value = 1
Range(.Cells(j, 6), .Cells(j, 6)).Borders.Value = 1
...
End If
End With
...
A+
re
a priori trouvé:
en conservant le With .. End With, remplacer les 6 lignes de mise en forme de bordure par
.Range(Cells(j, 1).Address, Cells(j, 6).Address).Borders.Value = 1
A+
a priori trouvé:
en conservant le With .. End With, remplacer les 6 lignes de mise en forme de bordure par
.Range(Cells(j, 1).Address, Cells(j, 6).Address).Borders.Value = 1
A+
Non plus le problème vient cette fois ci de la ligne Clear.
Le problème viendrait de Range et se déclenche dès qu'une autre macro est lancé sur la feuille. La macro de la feuille est un bouton retour qui me permet de retourner à ma feuille principale là ou se font toute les saisies et c'est lorsque je clique sur ce bouton que range devient impossible si je change de page manuellement il n'y a pas de problème et en lançant les macros sur les autres feuille et en revenant dans la feuille du tableau il n'y a pas de problème.
Le problème viendrait de Range et se déclenche dès qu'une autre macro est lancé sur la feuille. La macro de la feuille est un bouton retour qui me permet de retourner à ma feuille principale là ou se font toute les saisies et c'est lorsque je clique sur ce bouton que range devient impossible si je change de page manuellement il n'y a pas de problème et en lançant les macros sur les autres feuille et en revenant dans la feuille du tableau il n'y a pas de problème.
Le mieux, c'est de joindre votre classeur sans données sensibles pour voir les interactions des autres macros.
A+
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re
Désolé, j'ai parcouru les feuilles et les userform dans tous les sens : pas d'anomalies.
Je vous met le code modifié de la Private Sub Worksheet_Activate() de la feuille Tableau = Tous les devis pour éviter de parcourir plus de 200 lignes pour rien. J'ai supprimé le référencement à la feuille puisque l'on se trouve dans la feuille concernée.
Refaite des essais sur votre classeur transmis (qui n'est sans doute pas le classeur original)
Si ça ne se reproduisait pas : anomalie au niveau du classeur original
Si ça se reproduite : Nouveau message avec exactement le procédure suivie amenant cette anomalie.
A+
Désolé, j'ai parcouru les feuilles et les userform dans tous les sens : pas d'anomalies.
Je vous met le code modifié de la Private Sub Worksheet_Activate() de la feuille Tableau = Tous les devis pour éviter de parcourir plus de 200 lignes pour rien. J'ai supprimé le référencement à la feuille puisque l'on se trouve dans la feuille concernée.
Private Sub Worksheet_Activate()
Dim DerLig As Integer
Dim j As Integer
Dim As Integer
j = 4
DerLig = Sheets("Devis réalisés").Range("A" & Rows.Count).End(xlUp).Row
Range("A4:F203").Clear
For i = 7 To DerLig
If Sheets("Devis réalisés").Cells(i, 4) <> "" Then
Cells(j, 1) = Sheets("Devis réalisés").Cells(i, 1).Value
Cells(j, 2) = Sheets("Devis réalisés").Cells(i, 2).Value
Cells(j, 3) = Sheets("Devis réalisés").Cells(i, 3).Value
Cells(j, 4) = Sheets("Devis réalisés").Cells(i, 5).Value
Cells(j, 5) = Sheets("!").Cells(i, 26)
Cells(j, 6) = Sheets("Devis réalisés").Cells(i, 8)
Range(Cells(j, 1).Address, Cells(j, 6).Address).Borders.Value = 1
j = j + 1
End If
Next
End Sub
Refaite des essais sur votre classeur transmis (qui n'est sans doute pas le classeur original)
Si ça ne se reproduisait pas : anomalie au niveau du classeur original
Si ça se reproduite : Nouveau message avec exactement le procédure suivie amenant cette anomalie.
A+
A noter :
dans le dernier code fourni, supprimer Dim As Integer, reliquat de modification
par ailleurs la Private Sub Worksheet_Activate() de la feuille Tableau = Devis validés met à jour la feuille Tableau = Tous les devis ( mais ça ne provoque pas d'erreur
Bonne suite
dans le dernier code fourni, supprimer Dim As Integer, reliquat de modification
par ailleurs la Private Sub Worksheet_Activate() de la feuille Tableau = Devis validés met à jour la feuille Tableau = Tous les devis ( mais ça ne provoque pas d'erreur
Bonne suite
pouvez décrire (comme demandé plus haut) précisemment les manipulations effectuées qui provoquent le plantage, afin que je les exécute sur votre classeur d'essai ?
Sur le classeur d'essais transmis, aucune anomalie en suivant votre procédure!
vous avez procéder aux tests sur le fichier origine ou sur le classeur transmis?
vous avez procéder aux tests sur le fichier origine ou sur le classeur transmis?
La feuille n'est pas protégé