Cellule sélectionnée figée après exécution macro

Résolu/Fermé
Patrick108 Messages postés 4 Date d'inscription jeudi 25 juillet 2013 Statut Membre Dernière intervention 30 juillet 2013 - 25 juil. 2013 à 11:40
Patrick108 Messages postés 4 Date d'inscription jeudi 25 juillet 2013 Statut Membre Dernière intervention 30 juillet 2013 - 30 juil. 2013 à 16:18
Bonjour,

J'utilises des macros via des boutons pour créer des devis.
Les boutons me permettent de recopier des lignes types présentes sur un autre onglet caché.
Mes macros ne sont pas stables : elles fonctionnent 90% du temps mais au bout de plusieurs utilisations, il arrive que l'écran se fige après exécution : l'affichage de la cellule sélectionnée est figé mais je peux néanmoins mettre à jour les cellules (seul le "carré de sélection" est figé : on ne voit plus l'endroit ou l'on clique...).
J'espère être clair...
Ci-dessous une des macros liées qui permet d'insérer une ligne là où on le souhaite dans le devis.
A priori j'avais déjà ce problème avant de rajouter les ntions d'Application.ScreenUpdating en début et fin.

Ce fichier est utilisé par de nombreux utilisateurs et je ne peux pas le laisser planter...
Pouvez vous m'aider ???

*****

Private Sub ajouterligne_position(Ligne As Integer, col As Integer)

' Ajoute une ligne choisie dans l'onglet Listes (feuil4) dans le devis (feuil2)
' L'utilisateur choisit la ligne (position) au dessus de laquelle il insère la ligne
' Ligne = ligne à copier - col = colonne où positionner le curseur une fois la ligne copiée

Dim pos As Integer

On Error Resume Next
Application.ScreenUpdating = False

pos = InputBox("Au dessus de quelle ligne voulez vous ajouter celle-ci ?", "Ajout de ligne", 0)
If pos < 19 Then
pos = 19 ' évite de copier des lignes au dessus de la ligne de titre !
End If

Feuil2.Unprotect

'Copie la ligne sur la feuille 4 cachée "Listes"
Feuil4.Activate
Rows(Ligne).EntireRow.Select
Selection.Copy
'Recopie la ligne sur la feuille 2 "Devis"
Feuil2.Activate
Rows(pos).Insert

Cells(pos, col).Activate

Feuil2.Protect


Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
A voir également:

5 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
25 juil. 2013 à 11:53
Bonjour,

Pour éviter les problèmes, il faut traiter les erreurs correctement !!!
On Error Resume Next est un pis aller qui ne résout pas les problèmes.

Peux-tu mettre ton classeur (non confidentiel) sur cjoint et mettre le lien dans ton prochain message :
https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers#q=cjoint&cur=2&url=%2F
0
Patrick108 Messages postés 4 Date d'inscription jeudi 25 juillet 2013 Statut Membre Dernière intervention 30 juillet 2013
29 juil. 2013 à 12:02
Bonjour,

J'essaie une nouvelle fois de répondre : la semaine dernière mes réponses ne passaient pas.

Ci-joint mon fichier épuré : https://www.cjoint.com/?3GDl3Gnhna2

Le problème se pose à priori lorsque l'on essaie saisie du texte dans une cellule (par ex. de l'onglet "données d'entrée"). Si on passe directement à l'onglet "Devis détaillé' sans avoir validé par "ENTER" la saisie, et que l'on clique sur un bouton quelconque pour créer une nouvelle ligne, la macro plante et l'écran reste figé...
Je ne vois pas comment résoudre ce plantage ...????
Je veux bien votre avis sur mon code car je n'en fais pas souvent.
Merci de votre aidre.

Cdlt
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
29 juil. 2013 à 16:01
Bonjour Patrick108,

Je n'arrive pas à reproduire l'erreur que tu décris.
Peux-tu nous indiquer la version d'Excel que tu utilises ?

De plus quand une macro tourne en boucle infinie, tu peux utiliser "Ctrl+Pause" pour l'arrêter (il faut parfois s'acharner à utiliser cette combinaison de touches), et je crois que tu peux voir à quelle étape tu as arrêté la macro.

A+
0
Patrick108 Messages postés 4 Date d'inscription jeudi 25 juillet 2013 Statut Membre Dernière intervention 30 juillet 2013
29 juil. 2013 à 16:38
J'utilises Excel 2010.
J'ai remarqué que le plantage se produit à priori lorsque l'on est entrain de saisir des données dans une case (choix dans liste déroulante, ajout de commentaire). L'utilisateur ne valide pas l'entrée de ses données (il n'appuie pas sur "Entrée") mais clique sur un bouton d'ajout "ICI"...
Ce fichier est utilisé par au moins 20 personnes et j'aimerais bien qu'il soit stable...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
29 juil. 2013 à 22:14
Bonsoir,

Avec Excel 2002 le problème ne se produit pas.

Ici, je ne dispose pas de 2010 mais il me semble me souvenir qu'il n'est pas possible d'agir sur des objets (boutons) lorsqu'on est en mode édition (en train d'écrire dans une cellule) : avant, il faut sortir du mode édition (par exemple en appuyant sur Echap). A tester pour savoir si le plantage persiste.

Si le mode édition n'interdit pas l'action sur le bouton, le problème vient peut-être du fait que l'objet actif est le bouton (au lieu d'une cellule). Essaies avec un bouton ActiveX (au lieu d'un bouton de formulaire) avec une procédure _Click() du type :
Private Sub MonBouton_Click()
  ActiveCell.Activate
  Call LaProcédureAdHoc
End Sub

0
Patrick108 Messages postés 4 Date d'inscription jeudi 25 juillet 2013 Statut Membre Dernière intervention 30 juillet 2013
30 juil. 2013 à 16:18
Bonjour,

Merci pour vos analyses.
J'ai changé le type de bouton : Formulaires -> activex et le problème ne se produit plus...
Merci de votre aide.
0