Nom d'une cellule nommée qui disparaît

criscris11

XLDnaute Accro
Bonsoir à tous,
Voici un code qui me pose un petit problème :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > Range("Debut").Row And Target.Row < Range("Fin2").Row Then
    If Range("Fin2").Row > 170 Then
        ActiveSheet.Range("A175").EntireRow.Delete
    End If
    ActiveWorkbook.Names.Add Name:="Fin2", RefersToR1C1:="=Liste batterie!R170C1"
End If
If Target.Row > Range("Debut").Row And Target.Row < Range("Fin1").Row Then
    If Range("Fin1").Row < 165 Then
        ActiveSheet.Range("A175").EntireRow.Insert Shift:=xlDown
    End If
    ActiveWorkbook.Names.Add Name:="Fin1", RefersToR1C1:="=Liste batterie!R165C1"
End If
End Sub
Cet événement se déclenche à chaque fois que j'insère ou supprime une lignes dans 3 onglets de mon fichier dont voici les codes :
Code:
Sub insert_lig()
    Application.ScreenUpdating = False
    Sheets(Array("Liste batterie", "Absences", "Feuille des présents")).Select
    Sheets("Liste batterie").Activate
    Rows(ActiveCell.Row & ":" & ActiveCell.Row).Select
    Selection.Insert Shift:=xlDown
    Application.ScreenUpdating = True
End Sub
Sub suppr_lig()
    Application.ScreenUpdating = False
    Sheets(Array("Liste batterie", "Absences", "Feuille des présents")).Select
    Sheets("Liste batterie").Activate
    Rows(ActiveCell.Row & ":" & ActiveCell.Row).Select
    Selection.Delete
    Sheets("Liste batterie").Select
    Application.ScreenUpdating = True
End Sub
Hors les deux cellules nommées (Fin1 et Fin2) ne sont pas renommées comme le prévoit la macro pourtant elles figurent bien et en bonne place dans Insertion, Nom, Définir.
Dernière chose, ces codes sont issus d'un fichier qui avait réalisé sur le forum et ce fichier fonctionne très bien : je poste les deux fichiers afin de voir une différence éventuelle.

Si quelqu'un a une autre proposition, pas de problème : le but est que si l'une des 2 macros Sub insert_lig() ou Sub suppr_lig() est lancée, on insère ou supprime une ligne de façon à ce que toutes lignes à partir de 180 ne bougent jamais (filtre élaboré par macro).
 

Pièces jointes

  • Insertion, suppression liste batterie.zip
    9 KB · Affichages: 32
  • Gestion des absences.zip
    192.3 KB · Affichages: 32
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Nom d'une cellule nommée qui disparaît

Salut criscris11 et le forum
T'en as pas des plus difficiles ? :p

Tu dois pas être très fort au jeu des 7 différences, hein !!!

J'en ai profité pour remanier ta formule
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > Range("Debut").Row And Target.Row < Range("Fin2").Row Then
    If Range("Fin2").Row > 170 Then
        ActiveSheet.Range("A175").EntireRow.Delete
    End If
    ActiveWorkbook.Names.Add Name:="Fin2", RefersTo:="='Liste batterie'!$A$170"
End If
If Target.Row > Range("Debut").Row And Target.Row < Range("Fin1").Row Then
    If Range("Fin1").Row < 165 Then
        ActiveSheet.Range("A175").EntireRow.Insert Shift:=xlDown
    End If
    ActiveWorkbook.Names.Add Name:="Fin1", RefersTo:="='Liste batterie'!$A$165"
End If
End Sub
bizarement Excel reconnait mieux
'Liste batterie'!$A$165
que
Liste batterie!$A$165

:D j'aime bien me moquer, surtout que la première fois que ça m'était arrivé, il n'y avait pas de forum, et que j'ai mis du temps à trouver. maintenant, je préfère le copier/coller. Allez savoir pourquoi !

A+
 

criscris11

XLDnaute Accro
Re : Nom d'une cellule nommée qui disparaît

Re,
Merci Gorfael : honte à moi car je n'ais pas fait attention lorque j'ai changé le nom de la feuille dans le nouveau fichier.
Bon, au moins un fil qui ne devrait pas s'éterniser.
Merci et bonne soirée.

Bonsoir JP : c'est tout à fait normal ;).
 

Cousinhub

XLDnaute Barbatruc
Re : Nom d'une cellule nommée qui disparaît

Bonsoir tout le monde

Gorfael, Vba préfère de loin les dénominations :

'Liste batterie'!$A$165

que

Liste batterie!$A$165

car dès qu'il y a un espace dans le nom d'un onglet, il lui est bien plus difficile de compiler.
D'où l'habitude de vieille que j'ai acquise, c'est à dire, remplacer les espaces par des Underscores (touche 8 du clavier).
Je ne nomme jamais de fichier (pour mon propre emploi) avec des espaces, ni d'onglet, voire de nom...
Les espaces sont aussi des sources d'embrouille...
Bonne soirée
 

criscris11

XLDnaute Accro
Re : Nom d'une cellule nommée qui disparaît

Re bh², Gorfael, JP,
Ok bh² j'ai bien pris note de ton intervention mais je résume : pas de fusion ;), pas d'espace alors à quoi cà sert tout cà :D : si je connaissais le ... qui les a inventés (merci qui ? Bill bien sûr. Tiens d'ailleurs pour ceux qui suivent pas les infos, je crois qu'il a perdu un procès ces jours-ci).
Bonne soirée à tous.
 

Gorfael

XLDnaute Barbatruc
Re : Nom d'une cellule nommée qui disparaît

Bonsoir tout le monde

Gorfael, Vba préfère de loin les dénominations :

'Liste batterie'!$A$165

que

Liste batterie!$A$165

car dès qu'il y a un espace dans le nom d'un onglet, il lui est bien plus difficile de compiler.
D'où l'habitude de vieille que j'ai acquise, c'est à dire, remplacer les espaces par des Underscores (touche 8 du clavier).
Je ne nomme jamais de fichier (pour mon propre emploi) avec des espaces, ni d'onglet, voire de nom...
Les espaces sont aussi des sources d'embrouille...
Bonne soirée
Salut à tous
Moi aussi, j'usais et abusais de "_", surtout, sur access, dans les noms, par exemple. Et je me suis retrouvé confronté à un programme industriel, et mes extractions ne fonctionnaient plus du tout.
Et oui, le underscore remplace l'étoile de windows : une chaîne quelconque de texte.
Depuis, je regardes ce qu'il faut faire pour gérer les espaces et autres caractères particuliers, et je les utilises.
A+
 

criscris11

XLDnaute Accro
Re : Nom d'une cellule nommée qui disparaît

Bonsoir àtous,
Je pose une petite question sur ce fil car cela concerne un des codes et à savoir celui-ci :
Code:
Sub insert_lig() 'raccourci CTRL+i
    Application.ScreenUpdating = False
    Sheets(Array("Liste batterie", "Absences", "Feuille des présents")).Select
    Sheets("Liste batterie").Activate
    Rows(ActiveCell.Row & ":" & ActiveCell.Row).Select
    Selection.Insert Shift:=xlDown
    Application.ScreenUpdating = True
End Sub
Quelle est la procédure pour que dans l'onglet "Feuille des présents" la formule qu'il y a dans la colonne G (mais seulement à partir de G3) soit recopiée par rapport à la cellule du dessus ? J'ai essayé avec
Code:
Selection.FillDown
    Selection.SpecialCells(xlCellTypeConstants, 23).Select
    Selection.ClearContents
mais je n'ai pas dû le mettre au bon endroit car j'ai un message d'erreur et je pense que cà vient du fait que mes trois onglets sont sélectionnés.
Merci d'avance et bonne soirée.

Pour répondre à la question de JP (concernant Bill) : s'il disparaît on devar tous se mettre à OpenOffice (OOo pour les intimes) et son tableur Calc.
Ceci dit, entre nous, il propose les mêmes fonctionnalités (voir peut-être même plus) et il est compatible avec le pack office de Bill mais, car il y a toujours un mais, ce n'est pas le cas avec les macros (language différent) : imagines un peu le tableau, je viens tous nos chers VBéistes réécrirent tous les codes un par un...:mad:
Bref on n'en est pas encore là et c'est tant mieux.
 

Gorfael

XLDnaute Barbatruc
Re : Nom d'une cellule nommée qui disparaît

Salut à tous
Code:
Sub insert_lig() 'raccourci CTRL+i
    Application.ScreenUpdating = False
    Sheets(Array("Liste batterie", "Absences", "Feuille des présents")).Select
    Sheets("Liste batterie").Activate
    Rows(ActiveCell.Row & ":" & ActiveCell.Row).Select
    Selection.Insert Shift:=xlDown
    Application.ScreenUpdating = True
End Sub
Essaies de remplacer
Rows(ActiveCell.Row & ":" & ActiveCell.Row).Select
Selection.Insert Shift:=xlDown
Par
Rows(ActiveCell.Row).Insert Shift:=xlDown

Quelle est la procédure pour que dans l'onglet "Feuille des présents" la formule qu'il y a dans la colonne G (mais seulement à partir de G3) soit recopiée par rapport à la cellule du dessus ? J'ai essayé avec
Code:
Selection.FillDown
   Selection.SpecialCells(xlCellTypeConstants, 23).Select
   Selection.ClearContents
mais je n'ai pas dû le mettre au bon endroit car j'ai un message d'erreur et je pense que cà vient du fait que mes trois onglets sont sélectionnés.
Merci d'avance et bonne soirée.
Un peu perdu : ton code demande de sélectionner les cellules contenant un nombre non-calculé, fixe (une constante numérique) et d'effacer ces constantes.
Cette partie de code est située dans quelle macro ? quel Module ?
J'ai fais un test, et aucun problème sur un module général : les cellules contenant des constantes sur la feuille active sont bien effacées sur toutes les feuilles

Pour répondre à la question de JP (concernant Bill) : s'il disparaît on devar tous se mettre à OpenOffice (OOo pour les intimes) et son tableur Calc.
Ceci dit, entre nous, il propose les mêmes fonctionnalités (voir peut-être même plus) et il est compatible avec le pack office de Bill mais, car il y a toujours un mais, ce n'est pas le cas avec les macros (language différent) : imagines un peu le tableau, je viens tous nos chers VBéistes réécrirent tous les codes un par un...:mad:
Bref on n'en est pas encore là et c'est tant mieux.
Non, t'es pas obliger de réécrire les formules, Ooo gère le VBA.
Quand à dire que Billy est condamné : oui, mais à ouvrir ses sources (pour que ses concurrents aient accès aux fonctionnalités de windows - Et il ne pourra plus planquer des Trojans et des Backdoor dans ses codes, c'est bête ça) et ça va mettre un certain temps (ou plutot un temps certain).
Et surtout, avec tout ça, il ne pourra plus vendre des versions contenant les mêmes bugs que les versions précédentes (à cause d'une loi immonde qui impose la gratuité d'un petit nombre de mises à jour mineures-quel scandale !)
D'ailleurs, c'esy plus Billy le chef, d'après ce que j'ai entendu aux infos (sur qui on va taper maintenant ???)

Mais avec ça, j'ai pas la réponse à la question !!!
A+
Les balises [ code]...[ /code] n'aiment pas la mise en gras, elles appellent des copines quand c'est le cas
 
Dernière édition:

criscris11

XLDnaute Accro
Re : Nom d'une cellule nommée qui disparaît

Bonsoir Gorfael, le forum,
Il me paraît avoir lu que les 2 languages VB étaient différents et que les macros ansi écrites en VBA ne fonctionnaient sous le language de programmation d'OpenOffice.

Revenons à nos moutons : voilà comment j'avais écrit le code
Code:
Sub insert_lig() 'raccourci CTRL+i
    Application.ScreenUpdating = False
    Sheets(Array("Liste batterie", "Absences", "Feuille des présents")).Select
    Sheets("Liste batterie").Activate
    Rows(ActiveCell.Row & ":" & ActiveCell.Row).Select
    Selection.Insert Shift:=xlDown
    [COLOR=blue]Selection.FillDown[/COLOR]
[COLOR=blue]   Selection.SpecialCells(xlCellTypeConstants, 23).Select[/COLOR]
[COLOR=blue]   Selection.ClearContents[/COLOR]
    Application.ScreenUpdating = True
End Sub
mais écrit de cette façon, j'obtiens une erreur d'éxécution 1004 - Impossible de lire la propriété SpecialCells de la classe Range.
Le but étant, dans les trois onglets sélectionnés, de recopier la ligne du dessus après l'insertion de la nouvelle ligne et d'effacer les constantes afin de garder les formats et les formules quand il y en a (ici une seule formule dans l'onglet "Feuille des présents en colonne G3 à G... mais le fichier peut-être ammené à évoluer).
Merci et bonne soirée.

Je vais faire un test avec : Rows(ActiveCell.Row).Insert Shift:=xlDown
 
Dernière édition:

criscris11

XLDnaute Accro
Re : Nom d'une cellule nommée qui disparaît

Re,
Je viens de faire le test mais la ligne est insérée uniquement dans le premier onglet et pas dans les deux suivants.
Merci quand même.
Mise à part le problème de la recopie, le code fonctionne bien.
Je viens de penser à une chose : je vais essayer d'ajouter dans la procédure une ligne qui sélectionne l'onglet où il y a la formule et y appliquer la recopie et enfin resélectionner les 3 onglets.
Je te tiens au courant après ce test.
 

criscris11

XLDnaute Accro
Re : Nom d'une cellule nommée qui disparaît

Re,
Voilà ce que j'ai essayé :
Code:
Sub insert_lig() 'raccourci CTRL+i
    Application.ScreenUpdating = False
    Sheets(Array("Liste batterie", "Absences", "Feuille des présents")).Select
    Sheets("Liste batterie").Activate
    Rows(ActiveCell.Row & ":" & ActiveCell.Row).Select
    Selection.Insert Shift:=xlDown
    [COLOR=blue]Sheets("Feuille des présents").Select
    Selection.FillDown
    Selection.SpecialCells(xlCellTypeConstants, 23).Select
    Selection.ClearContents
    Sheets(Array("Liste batterie", "Absences", "Feuille des présents")).Select
    Sheets("Liste batterie").Activate
[/COLOR]    Application.ScreenUpdating = True
End Sub
mais je n'obtiens toujours pas le bon résultat car je me retrouve avec 2 lignes insérées au lieu d'une et la partie du code que j'ai inséré recopie la sélection de la première ligne insérée donc normal que j'ai le message d'erreur qui dit qu'il n'y a pas de cellules correspondantes.
Merci d'avance et bonne soirée.
 

Spitnolan08

XLDnaute Barbatruc
Re : Nom d'une cellule nommée qui disparaît

Bonsoir le fil,

Je n'ai pas encore compris dans tous les détails ce que tu voulais faire...
Mais :
1°/ Tu es obligé, sauf erreur (pas vérifié), de sélectionner ta ligne via le code si tu veux que l'insertion concerne toutes les feuilles.
Par ailleurs, il faut aussi le faire si tu veux recopier les formules de toutes les cellules de la ligne supérieure. Sinon la propriété filldown ne te donnera pas le résultat escompté.
2°/ pour recopier tes formules et formats de toutes tes feuilles quelle que soit la ligne selectionnée je te propose la modif suivante :
Code:
sub insert()
    Application.ScreenUpdating = False
    Sheets(Array("Liste batterie", "Absences", "Feuille des présents")).Select
    Sheets("Liste batterie").Activate
    Selection.EntireRow.Select
     If Selection.Row > 3 Then
          Selection.EntireRow.Insert
          Selection.FillDown
     Elseif selection.row =3 then
          Selection.EntireRow.Insert
          Selection.FillUp
     End If
    Application.ScreenUpdating = True
End sub
Testes et dis nous

Cordialement
 
Dernière édition:

criscris11

XLDnaute Accro
Re : Nom d'une cellule nommée qui disparaît

Bonsoir à tous,
Désolé Spit, ton code ne fonctionne pas comme souhaité. En effet il recopie bien ce qu'il faut mais je me retrouve avec la ligne au dessus de l'insertion effacée dans les 2 onglets "Absences" et "Feuille des présents" : en clair j'ai un personnel en moins dans ces deux onglets par rapport à ma liste batterie.
Si tu vois une autre solution, je veux bien tester. Merci d'avance et bonne soirée.
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 103
Membres
104 032
dernier inscrit
akram.job