Afficher un message lors d'une insertion de ligne
Fermé
Zoe
-
30 oct. 2014 à 12:07
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 31 oct. 2014 à 18:31
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 31 oct. 2014 à 18:31
A voir également:
- Afficher un message lors d'une insertion de ligne
- Message - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
- Message d'absence thunderbird - Guide
18 réponses
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
30 oct. 2014 à 14:34
30 oct. 2014 à 14:34
Via le code VBA on peut utiliser la fonction MsgBox pour afficher les message.
MsgBox "Écrire le texte entre les guillemet", vbInformation
Mais à ma connaissance, il n'y a pas d'évènement qui s'active lorsqu'on insert une ligne.
Donc, l'idéal serait peut-être d'ajouter un bouton qui insert une ligne et affiche le message.
Ça dépend de l'utilisation que tu fais de ta feuille Excel et les circonstance lié à l'ajout d'une ligne.
MsgBox "Écrire le texte entre les guillemet", vbInformation
Mais à ma connaissance, il n'y a pas d'évènement qui s'active lorsqu'on insert une ligne.
Donc, l'idéal serait peut-être d'ajouter un bouton qui insert une ligne et affiche le message.
Ça dépend de l'utilisation que tu fais de ta feuille Excel et les circonstance lié à l'ajout d'une ligne.
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
30 oct. 2014 à 16:29
30 oct. 2014 à 16:29
Il faudrait que dans les évènement de ta feuille, l'on puisse afficher le msgbox.
Le problème, c'est d'identifier quand faire le trigger.
Un rappel général lors d'un ajout de ligne peut importe ou, non, je ne crois pas que ce soit possible. la seule possibilité que je vois, est si tu ajoute une ligne spécifiquement à un endroit précis on pourrait capté la position.
Comme dans l'exemple suivant :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = 12 Then
MsgBox "Positionné sur la ligne 12, attention avec l'ajout de ligne", vbInformation
End If
End Sub
un message est affiché chaque fois qu'on est sur la ligne 12.
Le seul paramètre qu'on a, c'est dans quel case on se trouve.
Il y a d'autre évènement, comme Worksheet_Change,
mais encore la, je ne vois pas de moyen d'identifier qu'une insertion de ligne est faite autre qu'avec la position relative.
Le problème, c'est d'identifier quand faire le trigger.
Un rappel général lors d'un ajout de ligne peut importe ou, non, je ne crois pas que ce soit possible. la seule possibilité que je vois, est si tu ajoute une ligne spécifiquement à un endroit précis on pourrait capté la position.
Comme dans l'exemple suivant :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = 12 Then
MsgBox "Positionné sur la ligne 12, attention avec l'ajout de ligne", vbInformation
End If
End Sub
un message est affiché chaque fois qu'on est sur la ligne 12.
Le seul paramètre qu'on a, c'est dans quel case on se trouve.
Il y a d'autre évènement, comme Worksheet_Change,
mais encore la, je ne vois pas de moyen d'identifier qu'une insertion de ligne est faite autre qu'avec la position relative.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
31 oct. 2014 à 11:39
31 oct. 2014 à 11:39
Bonjour,
a mettre dans la feuille concernée:
fonctionne pour l'insertion ou la suppression de ligne
a mettre dans la feuille concernée:
Option Explicit Private x As Long Private Sub Worksheet_Activate() x = ActiveSheet.UsedRange.Rows.Count End Sub Private Sub Worksheet_Change(ByVal Target As Range) If ActiveSheet.UsedRange.Rows.Count <> x Then MsgBox "changement" End Sub
fonctionne pour l'insertion ou la suppression de ligne
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
31 oct. 2014 à 14:04
31 oct. 2014 à 14:04
Sélectionner votre feuille et faites Alt F11 pour ouvrir l'éditeur. Vous coller le code là
Merci j'ai réussi insérer le code, cependant il s'affiche "trop" c'est à dire qu'il apparait aussi quand je suis dans une cellule et que j'appuie sur ENTREE.
Je voudrais uniquement l'ajout et suppression de ligne.
Je voudrais uniquement l'ajout et suppression de ligne.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
31 oct. 2014 à 14:59
31 oct. 2014 à 14:59
La solution que je propose c'est de délimiter une plage de cellule où le message sera actif:
Option Explicit Private x As Long Private Sub Worksheet_Activate() x = ActiveSheet.UsedRange.Rows.Count End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:M40")) Is Nothing Then 'zone d'activation du message If ActiveSheet.UsedRange.Rows.Count <> x Then MsgBox "changement" End If End Sub
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
31 oct. 2014 à 15:05
31 oct. 2014 à 15:05
Tu mets ta zone dans la colonne A et le tour est joué:
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Oui bonne astuce ! Mais faut pas entrer dans les cellules de la colonne A.
Quand je change de feuille et revient sur la feuille où se trouve mon code, ce dernier ne fonctionne plus... Pourquoi ?
Quand je change de feuille et revient sur la feuille où se trouve mon code, ce dernier ne fonctionne plus... Pourquoi ?
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
31 oct. 2014 à 16:03
31 oct. 2014 à 16:03
La meilleur façon de comprendre ce qui se passe.
Ajouter temporairement un msgbox pour voir la valeur de la zone.
Private Sub Worksheet_Activate()
x = ActiveSheet.UsedRange.Rows.Count
Msgbox X
End Sub
La fonction activate n'est pas lancé à l'ouverture, elle est par contre activée si on change de feuille et revient à notre feuille avec le code.
Tu peux effacer le msgbox une fois que tu as fini tes tests.
Si tu veux un seul avertissement après avoir ajouter une ligne.
On n'a qu'a réassigner X après un changement.
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveSheet.UsedRange.Rows.Count <> x Then
MsgBox "changement"
x = ActiveSheet.UsedRange.Rows.Count
End If
End Sub
Le message s'affiche si la zone est plus grande que la valeur de X, mais on réassigne X après que le message soit affiché, donc il n'apparaîtra qu'une seule fois après chaque ajout de ligne.
Je ne crois pas qu'une zone active soit absolument nécessaire.
Ajouter temporairement un msgbox pour voir la valeur de la zone.
Private Sub Worksheet_Activate()
x = ActiveSheet.UsedRange.Rows.Count
Msgbox X
End Sub
La fonction activate n'est pas lancé à l'ouverture, elle est par contre activée si on change de feuille et revient à notre feuille avec le code.
Tu peux effacer le msgbox une fois que tu as fini tes tests.
Si tu veux un seul avertissement après avoir ajouter une ligne.
On n'a qu'a réassigner X après un changement.
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveSheet.UsedRange.Rows.Count <> x Then
MsgBox "changement"
x = ActiveSheet.UsedRange.Rows.Count
End If
End Sub
Le message s'affiche si la zone est plus grande que la valeur de X, mais on réassigne X après que le message soit affiché, donc il n'apparaîtra qu'une seule fois après chaque ajout de ligne.
Je ne crois pas qu'une zone active soit absolument nécessaire.
merci pour l'explication ! dommage car avec le systeme de la colonne A ca marchait bien mais pas quand on changeait de feuilles...
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
Modifié par PlacageGranby le 31/10/2014 à 16:46
Modifié par PlacageGranby le 31/10/2014 à 16:46
Alors, on peut y remédier.
Tu peux définir ton X à l'ouverture du classeur.
Option Explicit
Public x As Long
Private Sub Workbook_Open()
x = Worksheets("feuil1").UsedRange.Rows.Count
MsgBox x
End Sub
Donc il va regarder la grandeur de la zone active de FEUIL1 à l'ouverture.
Renomme feuil1 par le nom de la feuille ou tu veux que le message apparaisse.
Et tu conserve
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then 'zone d'activation du message
If ActiveSheet.UsedRange.Rows.Count <> ThisWorkbook.x Then MsgBox "changement"
End If
End Sub
dans le code de la feuille avec ThisWorkbook.x pour la référence à ta variable X
Donc, tu conserves les même réactions avec seulement la colonne A qui trigger le message. et la variable X n'est pas assigné avec Activate (lorsqu'on change de feuille), mais une seule fois à l'ouverture du classeur.
Donc une fois qu'une ligne est ajouté, le message apparaît toujours, mais seulement si on écrit dans la colonne A.
Donc tu peux utiliser le code selon ton gout, si tu veux un seul message, ou un rappel à chaque fois qu'on écrit dans la colonne A.
Si tu veux le rappel pour la colonne A ET B tu peux changer A:A pour A:B selon tes désirs :)
Tu peux définir ton X à l'ouverture du classeur.
Option Explicit
Public x As Long
Private Sub Workbook_Open()
x = Worksheets("feuil1").UsedRange.Rows.Count
MsgBox x
End Sub
Donc il va regarder la grandeur de la zone active de FEUIL1 à l'ouverture.
Renomme feuil1 par le nom de la feuille ou tu veux que le message apparaisse.
Et tu conserve
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then 'zone d'activation du message
If ActiveSheet.UsedRange.Rows.Count <> ThisWorkbook.x Then MsgBox "changement"
End If
End Sub
dans le code de la feuille avec ThisWorkbook.x pour la référence à ta variable X
Donc, tu conserves les même réactions avec seulement la colonne A qui trigger le message. et la variable X n'est pas assigné avec Activate (lorsqu'on change de feuille), mais une seule fois à l'ouverture du classeur.
Donc une fois qu'une ligne est ajouté, le message apparaît toujours, mais seulement si on écrit dans la colonne A.
Donc tu peux utiliser le code selon ton gout, si tu veux un seul message, ou un rappel à chaque fois qu'on écrit dans la colonne A.
Si tu veux le rappel pour la colonne A ET B tu peux changer A:A pour A:B selon tes désirs :)
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
31 oct. 2014 à 16:44
31 oct. 2014 à 16:44
Si tu veux écrire dans l'ouverture du classeur.
Quand tu es dans l'éditeur visual basic, tu as un explorateur de projet dans le coin gauche.
Tu peux voir les feuille et l'objet ThisWorkbook.
Tu double click sur Thisworkbook, et c'est la que tu peux mettre le code pour l'ouverture.
Quand tu es dans l'éditeur visual basic, tu as un explorateur de projet dans le coin gauche.
Tu peux voir les feuille et l'objet ThisWorkbook.
Tu double click sur Thisworkbook, et c'est la que tu peux mettre le code pour l'ouverture.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
31 oct. 2014 à 16:57
31 oct. 2014 à 16:57
PlacageGranby, tu es en train de tout embrouiller.
Beaucoup plus simple, sélectionner une cellule dans la colonne A pour réactiver le processus, lors du changement de feuille, comme ceci:
Beaucoup plus simple, sélectionner une cellule dans la colonne A pour réactiver le processus, lors du changement de feuille, comme ceci:
Option Explicit Private x As Long Private Sub Worksheet_Activate() Range("A1").Select x = ActiveSheet.UsedRange.Rows.Count End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then If ActiveSheet.UsedRange.Rows.Count <> x Then MsgBox "changement" End If End Sub
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
31 oct. 2014 à 17:58
31 oct. 2014 à 17:58
J'ai oublié un petit détail qui a son importance pour le bon fonctionnement:
Il faut que la cellule A1 soit rempli!!!!!!!!!!
Evidemment vous pouvez choisir une autre colonne et une autre cellule(rempli) dans cette même colonne suivant les besoins.
Il faut que la cellule A1 soit rempli!!!!!!!!!!
Evidemment vous pouvez choisir une autre colonne et une autre cellule(rempli) dans cette même colonne suivant les besoins.
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
31 oct. 2014 à 17:14
31 oct. 2014 à 17:14
Je trouvais quelques petits inconvénients.
À l'ouverture, le message s'affiche même si on n'a pas ajouté de ligne si on ne change pas de feuille.
Dans un classeur ayant une seule feuille, Activate n'est pas vraiment utile.
L'idéal, c'est de tester les solutions et de développer sa capacité à coder.
Désolé, moi j'essayais seulement d'aider.
Personne n'est parfait.
À l'ouverture, le message s'affiche même si on n'a pas ajouté de ligne si on ne change pas de feuille.
Dans un classeur ayant une seule feuille, Activate n'est pas vraiment utile.
L'idéal, c'est de tester les solutions et de développer sa capacité à coder.
Désolé, moi j'essayais seulement d'aider.
Personne n'est parfait.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
31 oct. 2014 à 17:42
31 oct. 2014 à 17:42
PlacageGranby,
J'ai fait des essais , le message ne s'affiche pas à l'ouverture!
Dans un classeur qui n'a qu'une feuille, le problème de changement de feuille ne se pose pas!
Je comprend que tu veuilles aider, c'est très bien. Mais je pense qu'en programmation, il faut faire le plus simple possible, comme dans beaucoup de chose.
Je suis un autodidacte, ce code je l'ai fait au fur a mesure des demandes en corrigeant les problèmes qui survenaient.
Cordialement
J'ai fait des essais , le message ne s'affiche pas à l'ouverture!
Dans un classeur qui n'a qu'une feuille, le problème de changement de feuille ne se pose pas!
Je comprend que tu veuilles aider, c'est très bien. Mais je pense qu'en programmation, il faut faire le plus simple possible, comme dans beaucoup de chose.
Je suis un autodidacte, ce code je l'ai fait au fur a mesure des demandes en corrigeant les problèmes qui survenaient.
Cordialement
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
31 oct. 2014 à 18:01
31 oct. 2014 à 18:01
Je n'arrive pas a comprendre pourquoi cela ne marche pas chez moi.
Private Sub Worksheet_Activate()
Range("A1").Select
x = ActiveSheet.UsedRange.Rows.Count
msgbox X
End Sub
J'ai ajouter un msgbox X à activate puisque c'est le seul endroit ou X recoit sa valeur.
Je ferme le classeur.
Lorsque je l'ouvre, aucun msgbox.
Donc X est vide pour l'instant. il n'y a rien qui appelle active à l'ouverture.
Si j'écris dans la colonne A, le msg s'affiche car X n'est pas encore assigné.
C'est un peu n'importe quoi, au plus simple, on pourrait avoir le message qui s'affiche peu importe dès qu'on écrit dans la colonne A.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then MsgBox "changement"
End Sub
Pour moi, un message qui pop trop souvent, çà devient rapidement fatiguant, donc j'essayais de vraiment valider qu'une ligne était ajouté.
Pour ma part, je l'avoue, je ne suis pas un expert, et comme toi, je teste et valide les solutions.
Je suis autodidacte et j'essaye de comprendre.
Aller au plus simple, je suis parfaitement d'accord. Mais j'essaie souvent de pousser les tests et approfondir pour m'améliorer.
Private Sub Worksheet_Activate()
Range("A1").Select
x = ActiveSheet.UsedRange.Rows.Count
msgbox X
End Sub
J'ai ajouter un msgbox X à activate puisque c'est le seul endroit ou X recoit sa valeur.
Je ferme le classeur.
Lorsque je l'ouvre, aucun msgbox.
Donc X est vide pour l'instant. il n'y a rien qui appelle active à l'ouverture.
Si j'écris dans la colonne A, le msg s'affiche car X n'est pas encore assigné.
C'est un peu n'importe quoi, au plus simple, on pourrait avoir le message qui s'affiche peu importe dès qu'on écrit dans la colonne A.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then MsgBox "changement"
End Sub
Pour moi, un message qui pop trop souvent, çà devient rapidement fatiguant, donc j'essayais de vraiment valider qu'une ligne était ajouté.
Pour ma part, je l'avoue, je ne suis pas un expert, et comme toi, je teste et valide les solutions.
Je suis autodidacte et j'essaye de comprendre.
Aller au plus simple, je suis parfaitement d'accord. Mais j'essaie souvent de pousser les tests et approfondir pour m'améliorer.
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
31 oct. 2014 à 18:11
31 oct. 2014 à 18:11
Je prend tout les commentaire de façon constructive, si il y a quelque chose que j'ai mal compris à l'ouverture, s.v.p. me l'indiquer pour m'aider a progresser.
Cordialement
PlacageGranby
Cordialement
PlacageGranby
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
31 oct. 2014 à 18:31
31 oct. 2014 à 18:31
J'ai mis la colonne A, évidemment il faut mettre une colonne que l'on n'est pas susceptible d'utiliser.
J'ai essayé ton code , le message s'affiche dès la sélection de ligne. Cela peut-être une autre approche!
Conclusion, je pense que cela peut convenir en veillant bien à choisir une colonne neutre.
J'ai essayé ton code , le message s'affiche dès la sélection de ligne. Cela peut-être une autre approche!
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then MsgBox "changement" End Sub
Conclusion, je pense que cela peut convenir en veillant bien à choisir une colonne neutre.