Suppression de la meme ligne dans plusieurs feuilles en meme temps
Dernière réponse : dans Programmation
Bonjour à tous
j'aurai besoin d'une aide.
je voudrais automatiser une tache. si je supprime une ligne de la feuille 1 j'aimerai que cette meme ligne soit supprimer dans la feuille 2 s'il s'agit de la meme ligne.
en cherchant un peu, j'ai ce code ci dessous. mais il ne me permet que la la suppression de la meme ligne
quelqu'un aurait il une idée.
Merci
j'aurai besoin d'une aide.
je voudrais automatiser une tache. si je supprime une ligne de la feuille 1 j'aimerai que cette meme ligne soit supprimer dans la feuille 2 s'il s'agit de la meme ligne.
en cherchant un peu, j'ai ce code ci dessous. mais il ne me permet que la la suppression de la meme ligne
Sub supprLigne()
Dim adresse As String, rep As String, NumLigne As String
With ActiveCell
adresse = Worksheets("Général").Cells(, 4)
NumLigne = Right(adresse, 1)
rep = MsgBox("Attention ! Vous allez supprimer cette ligne " & NumLigne & _
" des deux feuilles." & vbCrLf & "Voulez-vous continuer ?", vbExclamation + vbYesNo)
If rep = vbNo Then Exit Sub
.EntireRow.Delete
End With
Sheets("Site1").Cells(, 4).EntireRow.Delete
End Sub
quelqu'un aurait il une idée.
Merci
Autres pages sur : suppression ligne plusieurs feuilles temps
Lassé par la pub ? Créez un compte
Meilleure solution
Bon, alors tout d'abord, Excel ne génère pas d'événement spécifique quand on supprime une ligne
Et je ne vais pas me lancer dans une explication sur comment le faire. Pour les ceuces qui seraient malgré tout intéressé, voici un aveu d'impuissance de la part de Microsoft, et une solution horrible associée : http://msdn.microsoft.com/en-us/library/aa203089%28v=of...
Donc on reste sur l'idée d'une macro déclenchée par l'utilisateur :
Et je ne vais pas me lancer dans une explication sur comment le faire. Pour les ceuces qui seraient malgré tout intéressé, voici un aveu d'impuissance de la part de Microsoft, et une solution horrible associée : http://msdn.microsoft.com/en-us/library/aa203089%28v=of...Donc on reste sur l'idée d'une macro déclenchée par l'utilisateur :
Dim identifiant As String
Dim ligne_active As Range
Dim lignes_a_suppr() As Range
Dim cell As Range
Dim msg As String
Dim i As Integer
ReDim lignes_a_suppr(1 To Worksheets.Count)
Set ligne_active = ActiveCell.EntireRow
Set lignes_a_suppr(ligne_active.Worksheet.Index) = ligne_active
identifiant = ligne_active.Columns("D").Text
If identifiant = "" Then
MsgBox "Cette ligne ne contient pas d'identifiant !"
Exit Sub
End If
For Each ws In Worksheets
If Not ws Is ligne_active.Worksheet Then
For Each cell In ws.Range("D2", ws.Cells(ws.Rows.Count, 4).End(xlUp))
If cell.Text = identifiant Then
Set lignes_a_suppr(ws.Index) = cell.EntireRow
Exit For
End If
Next
End If
Next
msg = "Les lignes à supprimer sont "
For i = 1 To Worksheets.Count
If Not lignes_a_suppr(i) Is Nothing Then
msg = msg & vbCrLf & " * Feuille " & i & ", ligne " & lignes_a_suppr(i).Row
End If
Next
msg = msg & vbCrLf & vbCrLf & "Supprimer ces lignes ?"
If vbOK <> MsgBox(msg, vbOKCancel Or vbExclamation) Then Exit Sub
For i = 1 To Worksheets.Count
lignes_a_suppr(i).Delete
Next
zeb a dit :
Salut,Je déborde d'idées pour résoudre ton problème.
LOL ouffff
Il faudrait donc canaliser cette exubérance.
Qu'entends-tu par "cette meme ligne" ? Dis-nous en plus...
en fait je veu dire par là :
dans ma feuille 1, jai ma base de données.
cette base de données est répartie par site dans les autres feuilles. ex feuil2 : site1, feuil3 : site2 ...
dans ma feuille 2 (qui contient les memes éléments de ma base mais que ce qui concerne le site 1)
je voudrais que lorsque je supprime une ligne entière de la feuille 2, que cette meme ligne soit supprimée dans la feuille 1. et vice versa.
je ne sais pas si c'est clair, sinon je peu donner un exemple
zeb a dit :
Euh, ce n'est plus clair du tout là.Avec quels logiciels développes-tu ta solution ?
En fait je suis sous Excel 2003.
Voici un petit exemple pour être plus clair
Dans feuille 1, j’ai :
1 L11 L12 L13 L14 L15 L16 L17 L18
2 L21 L22 L23 L24 L25 L26 L27 L28
3 L31 L32 L33 L34 L35 L36 L37 L38
4 etc.…
Dans la feuille 2, j’ai :
20 L11 L12 L13 L14 L15 L16 L17 L18
… etc.
La ligne 1 de ma feuille 1 est la même que la ligne 20 de la feuille 2 sauf que elle ne se trouve pas à la même ligne dans la feuille 1 et dans la feuille 2.
Je veux que lorsque je supprime la ligne 1 dans feuille 1, que la ligne 20 soit supprimer (vu qu’il s’agit de la même chose mais à un emplacement différent)
Rholalalalalalalalalalala
Encore un qui confond tableur et base de données.
http://www.presence-pc.com/forum/ppc/Programmation/tuto...
Bon, réponds à cette question :
[_] Avant, j'étais bête. Je ne savais pas qu'il y a avait un différence entre un tableur et un gestionnaire de base de données. Maintenant, je vais traiter mes données avec l'outil adéquat.
[_] C'est pô de ma faute, m'sieur. C'est mon patron qu'est ignorant(1), idiot(1), pingre(1) et qui m'oblige à utiliser Excel
__________________________
(1) Rayer la mention inutile
Encore un qui confond tableur et base de données.
http://www.presence-pc.com/forum/ppc/Programmation/tuto...
Bon, réponds à cette question :
__________________________
(1) Rayer la mention inutile
zeb a dit :
Rholalalalalalalalalalala
Encore un qui confond tableur et base de données.
http://www.presence-pc.com/forum/ppc/Programmation/tuto...
Bon, réponds à cette question :
__________________________
(1) Rayer la mention inutile
dsl pour la confusion oups
sino j'arrive pas a ouvrir ton lien !!
Le lien est sur ce même site. Je ne comprends pas comment tu peux ne pas l'ouvrir. Bon, sinon son intérêt n'est pas capital ![[:patch] [:patch]]()
Quoi ????
C'est pas pour le boulot ? C'est pas pour un patron idiot qui te fait faire un boulot de traitement de données sur un tableur ?
Alors lâche Excel qui n'est pas fait pour ça et mets-toi aux bases de données pour de vrai.
------------------------------------
Si tu veux quand même le faire sur Excel, réponds à mon autre question.
![[:patch] [:patch]](http://m.bestofmedia.com/sfp/design/usr/fr/smilies/e5/c5/patch.gif)
Quoi ????
C'est pas pour le boulot ? C'est pas pour un patron idiot qui te fait faire un boulot de traitement de données sur un tableur ? Alors lâche Excel qui n'est pas fait pour ça et mets-toi aux bases de données pour de vrai.
------------------------------------
Si tu veux quand même le faire sur Excel, réponds à mon autre question.
zeb a dit :
Le lien est sur ce même site. Je ne comprends pas comment tu peux ne pas l'ouvrir. Bon, sinon son intérêt n'est pas capital ![[:patch] [:patch]](http://m.bestofmedia.com/sfp/design/usr/fr/smilies/e5/c5/patch.gif)
Quoi ????
C'est pas pour le boulot ? C'est pas pour un patron idiot qui te fait faire un boulot de traitement de données sur un tableur ? Alors lâche Excel qui n'est pas fait pour ça et mets-toi aux bases de données pour de vrai.
------------------------------------
Si tu veux quand même le faire sur Excel, réponds à mon autre question.
je voudrais faire la comparaison sur la colonne d vu que c'est un identifiant unique
Bon si c'est la même ligne avec un peu de chance tu dois avoir le même nombre de colonnes sur toutes tes feuilles.
Je verrais 2 solutions :
1) la méthode barbare tu compares la première cellule de chaque ligne de ta première feuille. Quand tu tombes sur la première cellule avec la même donnée tu compares ensuite la 2ème cellule et ainsi de suite jusqu'à ce que toutes les cellules de la ligne à supprimer correspondent à celle de référence.
2) vu que toutes les lignes de ta feuille 1 sont réparties sur tes différentes feuilles (en espérant que ce soit dans l'ordre sinon faudra rajouter des lignes de code), tu peux compter le nombre de lignes par feuille : tu prends l'indice de ta ligne dans la feuille 1, imaginons 50. Tu regardes le nombre de lignes dans ta feuille 2, imaginons 20. On fait 50-20=30. On regarde dans la feuille 3 et on a encore 20 lignes, 30-20=10. On regarde dans la feuille 4, y a 15 lignes (donc >10). Et tu sais que tu dois supprimer la 10ème ligne de ta feuille 4.
Je verrais 2 solutions :
1) la méthode barbare tu compares la première cellule de chaque ligne de ta première feuille. Quand tu tombes sur la première cellule avec la même donnée tu compares ensuite la 2ème cellule et ainsi de suite jusqu'à ce que toutes les cellules de la ligne à supprimer correspondent à celle de référence.
2) vu que toutes les lignes de ta feuille 1 sont réparties sur tes différentes feuilles (en espérant que ce soit dans l'ordre sinon faudra rajouter des lignes de code), tu peux compter le nombre de lignes par feuille : tu prends l'indice de ta ligne dans la feuille 1, imaginons 50. Tu regardes le nombre de lignes dans ta feuille 2, imaginons 20. On fait 50-20=30. On regarde dans la feuille 3 et on a encore 20 lignes, 30-20=10. On regarde dans la feuille 4, y a 15 lignes (donc >10). Et tu sais que tu dois supprimer la 10ème ligne de ta feuille 4.
sphynxounet a dit :
Bon si c'est la même ligne avec un peu de chance tu dois avoir le même nombre de colonnes sur toutes tes feuilles.Je verrais 2 solutions :
1) la méthode barbare tu compares la première cellule de chaque ligne de ta première feuille. Quand tu tombes sur la première cellule avec la même donnée tu compares ensuite la 2ème cellule et ainsi de suite jusqu'à ce que toutes les cellules de la ligne à supprimer correspondent à celle de référence.
2) vu que toutes les lignes de ta feuille 1 sont réparties sur tes différentes feuilles (en espérant que ce soit dans l'ordre sinon faudra rajouter des lignes de code), tu peux compter le nombre de lignes par feuille : tu prends l'indice de ta ligne dans la feuille 1, imaginons 50. Tu regardes le nombre de lignes dans ta feuille 2, imaginons 20. On fait 50-20=30. On regarde dans la feuille 3 et on a encore 20 lignes, 30-20=10. On regarde dans la feuille 4, y a 15 lignes (donc >10). Et tu sais que tu dois supprimer la 10ème ligne de ta feuille 4.
bah justement !
ça aurait été la meme ligne dans les 2 feuilles, ce serait trop fastoch lol
par ex une ligne qui se trouve en index 15 de la feuille1 peut se trouver en index 35 dans la feuille 2
sinon uii, g le meme nombre de colonnes
zeb a dit :
Bonnes idées, sphynxounet, mais la réponse ultime vient de fopy.Il a un identifiant unique !
(please wait...)
ui y a un identifiant unique
Mais pourquoi ça a tellement d'importance cet identifiant unique.
je demande ça parcque le contenu de la ligne "alpha" de la feuille 1 est exactement la mêm dans la feuille2. c'est juste sa place dans la feuille qui n'est pas la meme d'une feuille à l'autre!
sphynxounet a dit :
Bon histoire de bien comprendre : ton "identifiant unique" c'est le numéro de la ligne ou y a une colonne spécifique dans laquelle il y a un nombre qui est censé n'être présent que 2 fois dans ton fichier : 1 fois dans une ligne la feuille 1 et une autre fois dans une ligne d'une autre feuille ?MON identifiant unique est spécifique à chaque ligne; c'est mon numérod d'identifiant client.
oui il n'est présent que deux fois, comme tu las dit.
Par contre ce n'est pas le numéro de la ligne. c'est une chaine de caractères (string) qui se trouve précisément dans la colonne d
Mais c'est pas grave on s'en fou du numéro de la ligne alors. Ça se récupère facilement.
Une fois que tu connais cet id tu fais une comparaison de la cellule dans la feuille dans laquelle tu veux recherche la ligne puisque l'indice de la colonne est fixe. Une fois que la comparaison est vrai on "récupère" l'indice de la ligne :
Pour la feuille 1 :
Pour les autres feuilles faudra rajouter une autre boucle pour passer en revue toutes les feuilles (de la 2ème à la dernière).
Tu peux aussi rajouter des lignes de codes des fois que ton ID ne se trouve pas dans tes feuilles (ou ne s'y trouve qu'une fois).
Une fois que tu connais cet id tu fais une comparaison de la cellule dans la feuille dans laquelle tu veux recherche la ligne puisque l'indice de la colonne est fixe. Une fois que la comparaison est vrai on "récupère" l'indice de la ligne :
Pour la feuille 1 :
For i = 1 To max_lignes If feuil1.cells(i, indice_colonne_ID) = ID_unique Then ... on a i qui correspond à l'indice de la ligne donc on supprime cette ligne Exit For End If Next i
Pour les autres feuilles faudra rajouter une autre boucle pour passer en revue toutes les feuilles (de la 2ème à la dernière).
Tu peux aussi rajouter des lignes de codes des fois que ton ID ne se trouve pas dans tes feuilles (ou ne s'y trouve qu'une fois).
zeb a dit :
Bon, alors tout d'abord, Excel ne génère pas d'événement spécifique quand on supprime une ligne
Et je ne vais pas me lancer dans une explication sur comment le faire. Pour les ceuces qui seraient malgré tout intéressé, voici un aveu d'impuissance de la part de Microsoft, et une solution horrible associée : http://msdn.microsoft.com/en-us/library/aa203089%28v=of...Donc on reste sur l'idée d'une macro déclenchée par l'utilisateur :
Dim identifiant As String
Dim ligne_active As Range
Dim lignes_a_suppr() As Range
Dim cell As Range
Dim msg As String
Dim i As Integer
ReDim lignes_a_suppr(1 To Worksheets.Count)
Set ligne_active = ActiveCell.EntireRow
Set lignes_a_suppr(ligne_active.Worksheet.Index) = ligne_active
identifiant = ligne_active.Columns("D").Text
If identifiant = "" Then
MsgBox "Cette ligne ne contient pas d'identifiant !"
Exit Sub
End If
For Each ws In Worksheets
If Not ws Is ligne_active.Worksheet Then
For Each cell In ws.Range("D2", ws.Cells(ws.Rows.Count, 4).End(xlUp))
If cell.Text = identifiant Then
Set lignes_a_suppr(ws.Index) = cell.EntireRow
Exit For
End If
Next
End If
Next
msg = "Les lignes à supprimer sont "
For i = 1 To Worksheets.Count
If Not lignes_a_suppr(i) Is Nothing Then
msg = msg & vbCrLf & " * Feuille " & i & ", ligne " & lignes_a_suppr(i).Row
End If
Next
msg = msg & vbCrLf & vbCrLf & "Supprimer ces lignes ?"
If vbOK <> MsgBox(msg, vbOKCancel Or vbExclamation) Then Exit Sub
For i = 1 To Worksheets.Count
lignes_a_suppr(i).Delete
Next
RE zeb,
j'ai affecter cette macro à une commande de ma barre d'outils. et ca fonctionne.
donc si g bien compris on ne peut affecter une macro à une action de ce genre !! c bien ce que je pensais , mais je me disais qu'il devait y avoir un truc du genre ws_beforerightclik, mais bref....
Peut etre ca aurait pu etre plus simple si j'avais créé une macro mis a jour qui supprime les lignes qui ne se trouvent pas dans la feuille 1 et vice versa!! qu'en penses tu?
zeb a dit :
Oups, c'est moi. Il faut aussi mettre la ligne 31 devant la ligne 40.Ça fait :
For i = 1 To Worksheets.Count
If Not lignes_a_suppr(i) Is Nothing Then
lignes_a_suppr(i).Delete
End If
Next
ui j'ai vu que ca ne collait pas. et donc j'ai pris la ligne 40 et je l'ai mis entre la ligne 32 et 33.
puis j'ai mis en commentaires la 39 et la 41. ca marchait!!
Ai-je fais une bétise?
Bonjour,
J'ai la même question que fopy12 sauf que je n'y connais rien en code et en macro... J'ai bien compris qu'il y avait du code à faire mais je ne sais pas comment l'intégrer.
Voici ma demande : j'ai un tableur (qui me permet de gérer des adhérents d'association) avec plusieurs feuilles intitulées "informations générales" (avec le nom et prénom de chaque adhérent) et "émargement" (les noms et prénoms des adhérents s'affichent directement dans cette feuille lorsqu'ils sont tapés dans la feuille informations générales).
Mon souci est quand je supprime une ligne dans informations générales (car l'adhérent n'existe plus), une erreur s'affiche dans la feuille émargement #REF!.
La seule solution que j'ai trouvé est de supprimer la ligne à la main dans "émargement". Mais je souhaiterai que lorsque je supprime une ligne dans "infos gales", le message d'erreur n'existe plus.
Je suis tellement novice que je ne sais pas comment faire pour vous envoyer un exemple...
Merci d'avance pour vos réponses !
Delphine
J'ai la même question que fopy12 sauf que je n'y connais rien en code et en macro... J'ai bien compris qu'il y avait du code à faire mais je ne sais pas comment l'intégrer.
Voici ma demande : j'ai un tableur (qui me permet de gérer des adhérents d'association) avec plusieurs feuilles intitulées "informations générales" (avec le nom et prénom de chaque adhérent) et "émargement" (les noms et prénoms des adhérents s'affichent directement dans cette feuille lorsqu'ils sont tapés dans la feuille informations générales).
Mon souci est quand je supprime une ligne dans informations générales (car l'adhérent n'existe plus), une erreur s'affiche dans la feuille émargement #REF!.
La seule solution que j'ai trouvé est de supprimer la ligne à la main dans "émargement". Mais je souhaiterai que lorsque je supprime une ligne dans "infos gales", le message d'erreur n'existe plus.
Je suis tellement novice que je ne sais pas comment faire pour vous envoyer un exemple...
Merci d'avance pour vos réponses !
Delphine
delphine_573 a édité ce message
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumPlusieurs fai meme ligne
- ForumAdsl en meme temps
- ForumConnexion en meme temps
- ForumPlusieurs vpn en meme temps
- ForumDeux vpn en meme temps
- ForumLinux et windows en meme temps
- ForumEnregistrer plusieurs pistes en meme temps
- ForumTelecharger plusieurs torrent en meme temps
- ForumGhost sur plusieurs pc en meme temps
- ForumWifi ethernet en meme temps
- Voir plus