Erreur d'execution 28
nico
-
Bidouilleu_R Messages postés 1209 Statut Membre -
Bidouilleu_R Messages postés 1209 Statut Membre -
Bonjour,
j'ai ce message qui apparait "erreur d'exécution 28" après avoir activer la macro.
celle-ci est répétitive, elle fonctionne 95 fois environ, puis ce message apparait.
Je comprend que c'est l'appel d'une macro par une autre macro qui pose problème, mais je ne vois pas comment le résoudre.
voici le code;
Sub debutcopier()
Range("c3").Select
Application.Run "copiertout"
End Sub
Sub copiertout()
If Selection <> (" ") Then
ActiveCell.Offset(0, 6).Select
Selection.Copy
ActiveCell.Offset(0, 5).Select
Selection.PasteSpecial xlPasteValues
ActiveCell.Offset(0, -11).Select
ActiveCell.Offset(1, 0).Select
Application.Run "recomcopiertout"
Else
Application.Run "copiertoutsuite"
End If
End Sub
Sub copiertoutsuite()
ActiveCell.Offset(1, 0).Select
Application.Run "copiertout"
End Sub
Sub recomcopiertout()
Application.Run "copiertout"
End Sub
Merci de votre aide (si vous pouvez m'aider)
j'ai ce message qui apparait "erreur d'exécution 28" après avoir activer la macro.
celle-ci est répétitive, elle fonctionne 95 fois environ, puis ce message apparait.
Je comprend que c'est l'appel d'une macro par une autre macro qui pose problème, mais je ne vois pas comment le résoudre.
voici le code;
Sub debutcopier()
Range("c3").Select
Application.Run "copiertout"
End Sub
Sub copiertout()
If Selection <> (" ") Then
ActiveCell.Offset(0, 6).Select
Selection.Copy
ActiveCell.Offset(0, 5).Select
Selection.PasteSpecial xlPasteValues
ActiveCell.Offset(0, -11).Select
ActiveCell.Offset(1, 0).Select
Application.Run "recomcopiertout"
Else
Application.Run "copiertoutsuite"
End If
End Sub
Sub copiertoutsuite()
ActiveCell.Offset(1, 0).Select
Application.Run "copiertout"
End Sub
Sub recomcopiertout()
Application.Run "copiertout"
End Sub
Merci de votre aide (si vous pouvez m'aider)
A voir également:
- Erreur d'execution 28
- Erreur t32 ✓ - Forum Livebox
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur 0x80070643 - Accueil - Windows
- Corriger l'erreur 0x80070643 de la mise à jour KB5034441 de Windows 10 - Accueil - Windows
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
6 réponses
Bonjour,
voici une très belle démonstration du serpent qui se mord la queue....
le code est très clair pourtant...
debut je vais dans copiertout, je controle
if (premier passage) <> " " then
on copie
puis on repasse dans la boucle car tu appelle copiertout
else
execute copiertoutdesuite qui appelle copiertout
je repasse dans le if (2ème passage).....
..... et 7 boucles plus loin plantage et on ne vois pas l'erreur d'imbrication.
endif
il faut écrire.....
toutes les actions que tu veux faire et simplifier (éliminer!!!) les imbrications.
Ton problème vient de deux points :
1) l'utilisation de activecell (qui rend service) mais tu ne sais plus ou tu es quand tu reviens sur ta source
2) sans doute une utilisation du "if" a améliorer.
il est cependant difficile de t'aider car en analysant ton programme
on comprend que tu veux executer plusieurs fois la même boucle mais on ne sais pas pourquoi...
Du moins moi je ne comprend pas.
Je te conseille d'expliquer.
voici une très belle démonstration du serpent qui se mord la queue....
le code est très clair pourtant...
debut je vais dans copiertout, je controle
if (premier passage) <> " " then
on copie
puis on repasse dans la boucle car tu appelle copiertout
else
execute copiertoutdesuite qui appelle copiertout
je repasse dans le if (2ème passage).....
..... et 7 boucles plus loin plantage et on ne vois pas l'erreur d'imbrication.
endif
il faut écrire.....
toutes les actions que tu veux faire et simplifier (éliminer!!!) les imbrications.
Ton problème vient de deux points :
1) l'utilisation de activecell (qui rend service) mais tu ne sais plus ou tu es quand tu reviens sur ta source
2) sans doute une utilisation du "if" a améliorer.
il est cependant difficile de t'aider car en analysant ton programme
on comprend que tu veux executer plusieurs fois la même boucle mais on ne sais pas pourquoi...
Du moins moi je ne comprend pas.
Je te conseille d'expliquer.
merci beaucoup pour ta réponse BIDOUILLEU!
Hélas, je ne suis qu'un très modeste débutant.
Mon problème est que je veux effectuer la même action pour environ 600 ligne.
Ma question est: est-il possible d'effectuer cette action en déterminant un début (ligne 3 ) et une fin ( ligne 600) pour éviter le problème de serpent qui se mord la queue?
Hélas, je ne suis qu'un très modeste débutant.
Mon problème est que je veux effectuer la même action pour environ 600 ligne.
Ma question est: est-il possible d'effectuer cette action en déterminant un début (ligne 3 ) et une fin ( ligne 600) pour éviter le problème de serpent qui se mord la queue?
Bonjour,
Oui! bien sur, c'est possible.
Sub copiertout()
Dim i As Integer ' variable pour l'incrément
Range("c3").Select ' simplement pour montrer où ça commence
'De la ligne 3 à 600
For i = 3 To 600
Cells(i, 3).Select ' C3 à C600
If Selection <> (" ") Then ' J'ai repris ton test mais attention un espace ne se voit pas facilement
Cells(i, 3).Offset(0, 6).Select 'on selectionne 6 colonnes à droite : offset =décalage ' change le 6 si ce n'est pas OK
Selection.Copy
Cells(i, 3).Offset(0, 11).Select ' on colle 5 colonnes plus loin à droite ' Idem pour le 11
Selection.PasteSpecial xlPasteValues
'inutile de revenir
End If
next i ' à la ligne 600 on quitte
End Sub
Oui! bien sur, c'est possible.
Sub copiertout()
Dim i As Integer ' variable pour l'incrément
Range("c3").Select ' simplement pour montrer où ça commence
'De la ligne 3 à 600
For i = 3 To 600
Cells(i, 3).Select ' C3 à C600
If Selection <> (" ") Then ' J'ai repris ton test mais attention un espace ne se voit pas facilement
Cells(i, 3).Offset(0, 6).Select 'on selectionne 6 colonnes à droite : offset =décalage ' change le 6 si ce n'est pas OK
Selection.Copy
Cells(i, 3).Offset(0, 11).Select ' on colle 5 colonnes plus loin à droite ' Idem pour le 11
Selection.PasteSpecial xlPasteValues
'inutile de revenir
End If
next i ' à la ligne 600 on quitte
End Sub
Ca marche!!
Super!
Merci beaucoup, tu m'as apporté la solution que je cherchais désespérément, et en plus, je viens d'apprendre quelque chose de nouveau qui va me servir pour plein d'autres applications.
Vraiment MERCI !!
Super!
Merci beaucoup, tu m'as apporté la solution que je cherchais désespérément, et en plus, je viens d'apprendre quelque chose de nouveau qui va me servir pour plein d'autres applications.
Vraiment MERCI !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon je te corrige mais... ce n'est pas clair.
si ta procedure est juste.
la syntaxe c'est ça.
Sub conso()
'
' conso Macro
For i = 22 To 90
Rows(i).Select
Selection.Insert Shift:=xlDown
Range("H" & i).Select
ActiveCell.FormulaR1C1 = "=R" & i & "C7*R[-1]C"
Range("H" & i).Select
Selection.AutoFill Destination:=Range("H" & i & ":J" & i), Type:=xlFillDefault
Range("H" & i & ":J" & i).Select
Selection.NumberFormat = "0"
Next i
End Sub
Dis-moi si c'est ce que tu veux.
A+
si ta procedure est juste.
la syntaxe c'est ça.
Sub conso()
'
' conso Macro
For i = 22 To 90
Rows(i).Select
Selection.Insert Shift:=xlDown
Range("H" & i).Select
ActiveCell.FormulaR1C1 = "=R" & i & "C7*R[-1]C"
Range("H" & i).Select
Selection.AutoFill Destination:=Range("H" & i & ":J" & i), Type:=xlFillDefault
Range("H" & i & ":J" & i).Select
Selection.NumberFormat = "0"
Next i
End Sub
Dis-moi si c'est ce que tu veux.
A+