Comparer une cellule dans plusieurs onglet
BACON
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je réalise un outil de gestion de personnel, j'ai un code qui marche mais je voudrais l'améliorer.
Le classeur comporte 9 onglets identiques et titrés avec les noms des différents chantiers en cours. Un onglet synthèse vérifie qu'une personne ne pointe deux fois au même endroit au même moment. Si c'est le cas une formule affiche Erreur dans un onglet synthèse.
la macro ( un peu simpliste ) que j'ai permet d'afficher un message d'erreur dès la saisie d'une coquille n'importe où dans le tableau. Ce que je souhaite c'est pouvoir récupérer la position de la cellule qui est déjà affecté et afficher dans mon message ou aller la cherché.
Je me perds avec les conditions du If quand j'essaie de récupérer l'adresse de la cellule
Je réalise un outil de gestion de personnel, j'ai un code qui marche mais je voudrais l'améliorer.
Le classeur comporte 9 onglets identiques et titrés avec les noms des différents chantiers en cours. Un onglet synthèse vérifie qu'une personne ne pointe deux fois au même endroit au même moment. Si c'est le cas une formule affiche Erreur dans un onglet synthèse.
la macro ( un peu simpliste ) que j'ai permet d'afficher un message d'erreur dès la saisie d'une coquille n'importe où dans le tableau. Ce que je souhaite c'est pouvoir récupérer la position de la cellule qui est déjà affecté et afficher dans mon message ou aller la cherché.
Je me perds avec les conditions du If quand j'essaie de récupérer l'adresse de la cellule
Sub error() For Each cellule In Sheets("Synthèse").Range("C4:OX116") If cellule = "Erreur" Then MsgBox ("la personne est déjà affecté") End If Next End Sub
A voir également:
- Comparer une cellule dans plusieurs onglet
- Aller à la ligne dans une cellule excel - Guide
- Raccourci rouvrir onglet fermé - Guide
- Excel cellule couleur si condition texte - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Proteger cellule excel - Guide
4 réponses
Bonjour,
Je pense comprendre que tu aimerai récupérer les coordonnées de la cellule que tu es en train de "modifier" ?
En gros.. tu écris une valeur.. et hop ça déclenche ta macro ?
Dans ce cas tu dois regarder les event worksheet_change
Si tu veux effectuer une RECHERCHE dans ton classeur pour trouver où se trouve une valeur.. tu peux utiliser la méthode FIND
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
Je pense comprendre que tu aimerai récupérer les coordonnées de la cellule que tu es en train de "modifier" ?
En gros.. tu écris une valeur.. et hop ça déclenche ta macro ?
Dans ce cas tu dois regarder les event worksheet_change
Private Sub Worksheet_Change(ByVal Target as Range) MsgBox Target.address End Sub
Si tu veux effectuer une RECHERCHE dans ton classeur pour trouver où se trouve une valeur.. tu peux utiliser la méthode FIND
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
Bonjour Jordan45,
Merci pour la réponse hyper rapide :)
Alors je ne connaissais pas la fonction adress merci.
L'idée est un peu plus complexe, j'aimerais que la macro vérifie dans chaque onglet si il y a quelque chose dans la meme cellule que la synthèse. On a l'adresse d'une cellule dans un onglet, on aimerai savoir qu'est ce qu'il y a la même adresse mais dans un autre onglet. et afficher dans le message d'erreur le nom de l'onglet.
J'ai utilisé la sub worksheet_Change top !! Merci.
Merci pour la réponse hyper rapide :)
Alors je ne connaissais pas la fonction adress merci.
L'idée est un peu plus complexe, j'aimerais que la macro vérifie dans chaque onglet si il y a quelque chose dans la meme cellule que la synthèse. On a l'adresse d'une cellule dans un onglet, on aimerai savoir qu'est ce qu'il y a la même adresse mais dans un autre onglet. et afficher dans le message d'erreur le nom de l'onglet.
J'ai utilisé la sub worksheet_Change top !! Merci.
Bonjour Bacon, bonjour le forum,
Pas sûr d'avoir bien compris... Peut-être comme ça :
Pas sûr d'avoir bien compris... Peut-être comme ça :
Sub error() For Each cellule In Sheets("Synthèse").Range("C4:OX116") If cellule = "Erreur" Then MsgBox "La personne est déjà affectée dans la cellule " & celulle.address(0, 0) & "." End If Next End Sub
Bonjour Jordan45 et ThauTheme,
Merci pour vos réponses :)
Alors je ne connaissais pas la fonction adress merci.
L'idée est un peu plus complexe, j'aimerais que la macro vérifie dans chaque onglet si il y a quelque chose dans la meme cellule que la synthèse. On a l'adresse d'une cellule dans un onglet, on aimerai savoir qu'est ce qu'il y a à la même adresse mais dans un autre onglet. et afficher dans le message d'erreur le nom de l'onglet.
J'ai utilisé la sub worksheet_Change top !! Merci.
Merci pour vos réponses :)
Alors je ne connaissais pas la fonction adress merci.
L'idée est un peu plus complexe, j'aimerais que la macro vérifie dans chaque onglet si il y a quelque chose dans la meme cellule que la synthèse. On a l'adresse d'une cellule dans un onglet, on aimerai savoir qu'est ce qu'il y a à la même adresse mais dans un autre onglet. et afficher dans le message d'erreur le nom de l'onglet.
J'ai utilisé la sub worksheet_Change top !! Merci.
De la même manière que tu boucles sur tes cellules.... tu peux boucler sur les onglets de ton classeur
en remplacçant les variables ligne et colonne par les coordoneées que tu as trouvé juste avant....
(au lieu de address, tu pourras utiliser les attributs Row et Column de l'objet RANGE )
For Each F In ThisWorkbook.Sheets msgbox F.Cells(ligne,colonne).value Next
en remplacçant les variables ligne et colonne par les coordoneées que tu as trouvé juste avant....
(au lieu de address, tu pourras utiliser les attributs Row et Column de l'objet RANGE )
Merci vraiment merci, je sens que j'y suis presque : Mais j ai une erreur de compilation quand j'utilise IsEmpty :
Sub error()
For Each cellule In Sheets("Synthèse").Range("C4:OX116")
If cellule = "Erreur" Then
MsgBox "La personne est déjà affectée"
End If
Next
For Each F In ThisWorkbook.Sheets
If IsEmpty(F.Cells(cellule.Row, cellule.Column).Value) = True Then
MsgBox F.Name
End If
Next
End Sub
Sub error()
For Each cellule In Sheets("Synthèse").Range("C4:OX116")
If cellule = "Erreur" Then
MsgBox "La personne est déjà affectée"
End If
Next
For Each F In ThisWorkbook.Sheets
If IsEmpty(F.Cells(cellule.Row, cellule.Column).Value) = True Then
MsgBox F.Name
End If
Next
End Sub
Ta boucle sur les Feuille est en dehors de ta boucle sur tes cellules....
donc la variable "cellule" ne contient rien...
En plus le isEmpty sert à vérifier que la cellule est vide ... mais il me semblait que toi tu voulais vérifier la valeur qu'elle contenait (si un nom etait déjà rempli...)
NB: Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Merci d'y penser dans ton prochain message.
donc la variable "cellule" ne contient rien...
En plus le isEmpty sert à vérifier que la cellule est vide ... mais il me semblait que toi tu voulais vérifier la valeur qu'elle contenait (si un nom etait déjà rempli...)
NB: Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Merci d'y penser dans ton prochain message.