Problème de Macro

Fermé
TeddyGalere - 27 juin 2016 à 13:16
 TeddyGalere - 6 juil. 2016 à 16:18
Bonjour la communauté,

Petit soucis, j'ai un fichier Excel sur lequel j'ai plein de macro, et il y en a une qui ne marche plus (alors qu'elle fonctionnait très bien avant) et je ne comprend pas pourquoi?

Si quelqu'un saurait m'aider, voici le lien vers le fichier:
http://www.cjoint.com/c/FFoiB2yOHVL


La macro qui ne fonctionne plus ce trouve sur le formulaire "Budget".
Quand je sélectionne un champs dans la première ListBox, l'ensemble du formulaire ce met à jour automatiquement.
Quand j'appuie sur le bouton validé, la macro se met en mode débogage et je ne comprend pas pourquoi... :'(
A voir également:

12 réponses

Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
27 juin 2016 à 16:58
Bonjour,

J'ai remplacé la ligne qui posait problème :

n_ligne = .Columns("A").Find(ComboBox_choix, xlValues).Row


Par :

n_ligne = .Columns(1).Cells.Find(what:=ComboBox_choix.Value, LookAt:=xlWhole).Row


Du coup, fichier tout neuf :

https://www.cjoint.com/c/FFBo6Hk5hXf

Cordialement.
0
TeddyGalere
28 juin 2016 à 10:29
Bonjour Kuartz,

Merci pour ta réponse...
Tu as fait autre chose? Pcq si je fais juste ce changement dans mon fichier, cela ne marche pas...

Par contre j'ai fais un test avec ton fichier...
Cela marche bien, mais du coup si j'essaie de faire une nouvelle entrée ca me remet en mode déboguage sur la meme ligne...

Je te renvoi le fichier avec une entrée de plus. (structure - CPAM Moselle - 2016)

http://www.cjoint.com/c/FFCiDaULyXL

Le truc est que si la ligne est deja existente dans mon tableau, cela doit allé rechercher cette ligne mais si elle n'éxiste pas il faut allé en créer une...
Visiblement ca ne marche pas pour moi...

Merci d'avance.

Ps: D'ailleurs j'avais fait un bouton "saisie" pour créer une ligne et un bouton "consulter" pour rappeler une ligne et la modifier... Mais visiblement avec ton code, les 2 options devraient marchés quelque soit le bouton non?
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
Modifié par Kuartz le 28/06/2016 à 14:34
Re,

Moi en fait, je vois plutôt les choses comme ça, du coup ça fonctionne parfaitement.

Set Trouve = .Columns(1).Cells.Find(what:=ComboBox_choix.Value, LookAt:=xlWhole)

    If Trouve Is Nothing Then
        n_ligne = Sheets("Suivi budgétaire").Range("a50000").End(xlUp).Row + 1
    Else
        n_ligne = Trouve.Row
    End If


En fait le code dit, cherche la valeur, si tu ne la trouve pas, alors tu ajoute la ligne, sinon, tu modifie la ligne concernée.

(En réalité, il dit si tu ne la trouve pas, alors le numéro de ligne est la ligne en dessous la dernière ligne complétée de la feuille "Suivi budgétaire", sinon, le numéro de la ligne est celui de la ligne qui existe déjà)

Ne reste que le problème que lorsqu'une ligne est ajoutée, elle est ajoutée 4 lignes plus bas. Et pour cause, ce qu'il y a sur la feuille est un tableau "objet", il contient donc des lignes considérées comme utilisées par le code. Donc la notion de dernière ligne n'existe plus. Je ne comprend pas l'intérêt réel de la création d'un tableau sur un tableur mais bon...

Bref, voilà le fichier modifié :

https://www.cjoint.com/c/FFCmF6tqZVf

Cordialement.
0
TeddyGalere
28 juin 2016 à 17:21
Le soucis c'est qu'avec ce code, la ligne qu'il me rajoute ne fait plus parti du tableau et donc certains éléments (genre mise en forme conditionnelle) ne se mettent plus à jour automatiquement...

Ça m'ennuie, car fut un temps, cette macro marchait tres bien, et je ne sais pas pk elle ne marche plus...

L'idée de faire ça sous un tableur, était de pouvoir réaliser un suivi des échéances et des budgets de façon automatique, en remplissant seulement un UserForm.
(C'est une demande qui ne vient pas de moi... personnellement, j'aurai plutot fait des entrées manuels dans un tableau, mais travailler avec des personnes d'un certain age implique qu'elle ne savent pas se servir d'un ordinateur^^)

Tu aurais fait quoi toi?
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
28 juin 2016 à 18:57
Bonjour*
Peut-être une réponse à votre problème
Conversion du tableau automatique en table suivi de la recopie des valeurs puis re-création du tableau automatique aux nouvelles dimensions.
https://www.cjoint.com/c/FFCq3FLJaNw
A essayer
Cdlt
0
TeddyGalere
29 juin 2016 à 09:04
Bonjour Frenchie,

J'ai bien l'impression que vous êtes en train de me sauver la vie...

Je perds un peu au niveau de la mise en forme mais bon ça n'est pas très grave.
Cependant, je pense que maligne de référence avait du être hidé ou supprimer...
Elle permettait en effet de transférer automatiquement des formules et des mise en forme conditionnelles à toutes les lignes que j'ajoutai au tableau.

Serait-il possible de mettre a jour le tableau en comprenant cette ligne?

Je vous renvoi le fichier avec la fameuse ligne...
http://www.cjoint.com/c/FFDg6F5H8gL

En vous remerciant !!
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
29 juin 2016 à 18:14
Bonjour
Pour recopier vos formules, il y avait la solution d'utiliser l'enregistreur de macro en validant chaque cellule contenant une formule, puis d'appeler cette macro juste après le remplissage d'une ligne. Hélas, vous avez des formules beaucoup trop longues, notamment en colonnes AL et AP(2342 caractères).
Alors, autre solution retenue, on fait un copier/collage spécial formules de la ligne 3 sur la nouvelle ligne. (j'ai pris la ligne 3 parce que c'est la seule qui contient les formules, si vous avez un autre endroit ou elles sont stockées, vous pouvez changer)
https://www.cjoint.com/c/FFDqgi0ZDlw
Cdlt
0
TeddyGalere
30 juin 2016 à 14:30
Bonjour,
Je ne sais pas si ça fait la même chose sur votre document, mais visiblement le copié-collé formule ne marche pas sur ma version...
Il ne fait un copier collé de toutes les données (avec les formules).
Ainsi a chaque entrée je me retrouve avec des "a" partout :'(
0

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

Posez votre question
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
30 juin 2016 à 17:41
Bonjour
Voici, avec effacement de toutes les cellules ne contenant pas de formules
https://www.cjoint.com/c/FFEpNNW1avw
Cdlt
0
Bonjour Frenchie,
Je rencontre toujours le même probleme...
Sauf que maintenant il me copie la ou il y a des formules mais ne me copie plus les données de mon tableau...
Je désespère :)
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
1 juil. 2016 à 12:16
Bonjour
Rappel: ne pouvant enregistrer les formules car trop longues, j'ai opté pour une recopie de la ligne 3, cette ligne me sert de modèle, elle peut être sauvegardée à un autre endroit (dans une autre feuille par exemple).
J'ai supprimé l'effacement des données après recopie
https://www.cjoint.com/c/FGbkkQBkn6k
A tester
Cdlt
0
J'entends bien.
Le soucis étant que je pense qu'il faudrait copier les formules (de la ligne 3) dans la dernière ligne avant que la macro ne copie les données...
Car le soucis est qu'il copie tout... et non juste les cellules avec une formule...
Cela marche sur votre version?

http://www.cjoint.com/c/FGbmgbSQiEL
J'avais un soucis dans mes formules sur la ligne 3 donc voila le nouveau doc...
0
Ou sinon est ce possible de sélectionner seulement les cellule qui ont des formules pour faire le copier coller...
Ca devrait resoudr ele pb non?
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338 > TeddyGalere
1 juil. 2016 à 16:07
Je regarderai plus tard, De là ou je suis, je n'arrive pas à ouvrir votre fichier.
Patientez
Cdlt
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
2 juil. 2016 à 07:09
Bonjour
Voilà le fichier avec la modification.
Pour une question de sécurité et vu la taille des formules, j'ai préféré conserver une copie de la ligne 3 contenant les fameuses formules dans la feuille "Sauvegarde_formules",pour se prémunir d'un éventuel effacement du tableau de la feuille Suivi budgétaire".
Donc, si le contenu de la comboBox traitant l'Audit n'existe pas dans la feuille "Suivi budgétaire", alors on recopie cette ligne sauvegardée dans une nouvelle ligne de la feuille "Suivi budgétaire", sinon si l'audit est déjà existant, on remplace les valeurs.
https://www.cjoint.com/c/FGce6HwmZJw
En espérant que cela corresponde à vos attentes
Cdlt
0
Bonjour Frenchie,

Désolé de vous déranger de retour de week-end, mais cela ne fonctionne pas...
Je ne sais pas si c'est parce que nous avons des versions d'excel différentes, mais si je supprime une ligne, et que je veux la remettre (pour faire un test), excel me met en mode débogage...

Je vous retransmet le tableau car j'ai du changer les formules de la sheet (sauvergarde formule) car elles concernait a chaque fois 2 lignes...
http://www.cjoint.com/c/FGehQbSRw2L
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
4 juil. 2016 à 18:48
Bonjour
Je vais essayer d'être le plus clair possible.
La feuille "Suivi budgétaire" est faite avec un tableau automatique. Le problème, c'est que lorsque on ajoute une ligne, cette dernière se trouve en dehors du tableau. Pour respecter la construction de votre fichier, j'ai conservé ce tableau, mais à chaque fois que l'on réajuste sa taille, excel incrémente l'index affecter à ce tableau (tableau1 devient tableau2). Avant de sortir du programme je force l'index à 1, comme cela le tableau s'appelle toujours "tableau1", mais auparavant avant de le recréer je supprime ce "tableau1" afin que je puisse renommer le tableau ainsi créer en tableau1 (on ne peut pas renommer un tableau 2 en tableau1 si ce dernier existe déjà).

Principe du déroulement du programme:
-Tableau1 existe
-Conversion du "tableau1" en plage (on perd les caractéristiques du tableau automatique, on se retrouve avec une feuille excel classique)
-Ajout d'une nouvelle ligne
-Création d'un nouveau tableau nommé par excel "tableau2" incluant la nouvelle ligne.
-Renommage de "tableau2" en "tableau1".
-Prêt pour une nouvelle insertion de ligne, on recommence le cycle.

Le problème rencontré dernièrement est que le tableau1 n'a pas été recréé, donc n'ayant pas été trouvé, excel à déclenché une erreur. Pour contourner ce problème, j'ai rajouté une ligne qui ignore cette erreur et laisse continuer le programme si cela se produit.

https://www.cjoint.com/c/FGeqvMaNkPw
En espérant que ce soit la bonne.
Cdlt
0
Bonjour Frenchie,

Malheureusement, toujours le même problème...
Le programme marche bien, mais si par exemple de supprime une ligne, lorsque j'en rentrerai une nouvelle, la macro se mettra en mode débogage.

Merci pour votre aide, mais je vais tenté de repartir sur ma macro initiale, car une macro du même type fonctionne dans ma sheet recap...

Merci encore pour votre aide et vos explications.

Cordialement.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338 > TeddyGalere
Modifié par Frenchie83 le 5/07/2016 à 14:15
Bonjour
Il faudrait que vous me fournissiez le tableau avec l'exemple qui ne fonctionne pas afin que je puisse juger par moi-même en expliquant bien les actions que vous faites pour que je puisse reproduire le problème.
Cdlt
0
Sur votre tableau, si je vais dans la feuille "suivi budgétaire" et que je supprime la ligne 5 (qui concerne la CPAM de Moselle), et que je retourner ensuite sur la feuille saisie budgétaire pour lancé ma macro concernant ce même audit, excel me met en mode débogage.

Mais ma première macro me semblait bien.
Elle marchait fut un temps (grâce à vous si je ne me trompe pas) mais je ne comprend plus pourquoi elle ne marche pas.
Je vais donc me repencher dessus, car elle me permettait de garder mise en forme et tout ce qui va avec...
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
Modifié par Frenchie83 le 5/07/2016 à 16:22
Voilà, j'ai dû apporter quelques petites modifications après l'avoir sérieusement torturé.
Des erreurs sont apparues selon que j'effaçais une ligne ou bien que je la supprimais, les recopies suivantes ne se faisaient pas systématiquement là ou je les attendais (la cause étant liée toujours à ses fameux tableaux automatiques)
J'espère que cette fois-ci sera la bonne!!!
https://www.cjoint.com/c/FGfnoPxnYMk
Cdlt
0
Cela semble fonctionnement!!
Un grand merci à vous pour votre précieuse aide :)
0
Par contre j'imagine que si on veut une mise en page particulière du tableau ca devient une vraie usine a gaz non?
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
5 juil. 2016 à 17:40
si on veut une mise en page particulière du tableau Ca dépend de ce que vous voulez. Faut voir
0
Ca serait remettre la mise en page de la première ligne (vierge) sur celles qu'on rajoute.
Police, couleur de fond, ect...

Mais si c'est trop compliqué on laisse tomber...
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
6 juil. 2016 à 11:21
Bonjour
Comme ceci?
https://www.cjoint.com/c/FGgjuJ8dMIk
Cdlt
0
Oui plus ou moins...
J'aimerai que ca prenne la forme de la ligne 3 et non la ligne 1...
Par contre comment avez vous fait car je ne le retrouve pas dans le code...
Cordialement
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
6 juil. 2016 à 14:58
Voilà
https://www.cjoint.com/c/FGgm4x8BUBk
J'ai mis le bout de code entre 2 les lignes d'astérisques.
Cdlt
0
PARFAIT !!!!
Vous êtes mon sauveur Frenchie !!
Si je peux me permettre, quelle bout de code pourrais-je insérer pour caché la ligne 3?
Cordialement
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
6 juil. 2016 à 15:27
https://www.cjoint.com/c/FGgnzd8quFk
Je ne masque pas la ligne 3, je la réduis à une hauteur de 0,1, ce qui permet de pouvoir la recopier.
    Rows(3).RowHeight = 0.1

Les nouvelles lignes sont réajustées à la hauteur 15
        Rows(n_ligne).RowHeight = 15

Voilà
0
Merci beaucoup Frenchie !!
C'est parfait !!!
0