[Excel 2003] -Comment distinguer l'insertion, la modification et la suppression?

Taddy

XLDnaute Nouveau
Bonjour le forum,

Je dois différencier l'ajout, la modification et la suppression dans une feuille excel sans utiliser des boutons??
Par exemple, j'ai fait une macro qui permet lors d'une modif de changer toutes les entrées présentes dans les autres onglets. Cependant, si je rajoute une nouvelle entrée ma macro se déclenche.

Je voudrais faire par ailleurs, la même macro que j'ai déjà faite pour la modif, mais dans le cas d'une suppression et là je ne sais pas à quel évènement je dois associer ma macro.

J'espère être assez clair dans mes explications. Merci d'avance pour vos réponses ;).
 
G

Guest

Guest
Re : [Excel 2003] -Comment distinguer l'insertion, la modification et la suppression?

Bonjour Taddy,

Il y as des choses possibles mais tellement différentes suivant les cas, qu'il nous faudrait un classeur exemple pour pouvoir t'aider sans tourner en rond.

A+
 

Taddy

XLDnaute Nouveau
Re : [Excel 2003] -Comment distinguer l'insertion, la modification et la suppression?

Bonjour Hasco,

Je voudrais bien fournir un fichier mais le mien est très volumineux, et ce malgré toutes les suppressions que j'ai déjà faites, je ne peux pas couper plus.

J'essaye de faire un fichier moins gros et je reviens vers toi, le plus vite possible.

@++
 

Taddy

XLDnaute Nouveau
Re : [Excel 2003] -Comment distinguer l'insertion, la modification et la suppression?

Bonjour Hasco,

Malgré tous les efforts pour réduire mon fichier j'arrive à la solution de mettre tous mes onglets dans des classeurs différents. Il faudra par la suite les regrouper dans un même fichier si tu veux travailler dessus. Le plus gros des onglets "Personnes" j'ai mis une présentation du fichier en image et le code dans mon post car je n'ai pas réussi à le zipper en dessous de 48 Ko

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim ws As Object
Dim foundCell As Variant
Dim chaine, returnValue, rempl As String
Dim total, cpt As Long

Application.EnableEvents = False

'test sur la cellule cible
If Not Intersect(Target, Range("Nomination_Pers")) Is Nothing Then
    chaine = Cells(Target.Row, "H").Value
    rempl = Cells(Target.Row, "I").Value
Else
    Exit Sub
End If
If Len(chaine) = 0 Then Exit Sub

'debut de la recherche
For Each ws In Worksheets(Array("Personnes", "Structures-Personnes"))
                            
    total = total + Application.CountIf(ws.UsedRange, "=" & chaine)
    
Next ws

'total = total - 1

If total = 0 Then
    MsgBox "Pas d'entrée correspondant à cette personne", vbOKOnly, "Message"
Else
    cpt = 0
    
For Each ws In Worksheets(Array("Personnes", "Structures-Personnes"))
    With ws
        .Activate
        Set foundCell = .Cells.Find(What:=chaine, LookIn:=xlValues, LookAt:=xlWhole)
        
        If Not foundCell Is Nothing Then
           Do
                cpt = cpt + 1
                foundCell.Activate
                
                Select Case total
                    Case Is = 1
                        MsgBox "Il existe une seule entrée correspondant à " & chaine, vbOKOnly, "Message"
                        foundCell.Replace What:=chaine, Replacement:=rempl, LookAt:=xlWhole
                        MsgBox "Cette entrée a été remplacée par : " & rempl, vbOKOnly, "Message"
                        copier_coller
                        Exit For
                    Case Is = cpt
                        MsgBox "Dernière entrée correspondant à " & chaine, vbOKOnly, "Message"
                        foundCell.Replace What:=chaine, Replacement:=rempl, LookAt:=xlWhole
                        MsgBox "Fin des modifications pour : " & chaine, vbOKOnly, "Message"
                        copier_coller
                        Exit For
                    Case Else
                        MsgBox "Entrée n° " & cpt & " correspondant à " & chaine, vbOKOnly, "Message"
                        foundCell.Replace What:=chaine, Replacement:=rempl, LookAt:=xlWhole
                        returnValue = MsgBox("Cette entrée a été remplacée par : " & rempl & vbLf & "Voulez-vous continuer les modifications ?", vbYesNo, "Message")
                        If returnValue = vbNo Then
                            Sheets("Personnes").Activate
                            Target.Select
                            Exit Sub
                        Else
                            Set foundCell = .Cells.FindNext(After:=foundCell)
                        End If
                End Select
           Loop Until foundCell Is Nothing
        End If
    End With
Next ws
End If
Sheets("Personnes").Activate
Target.Select

Application.EnableEvents = True

End Sub

Sub copier_coller()

Sheets("Personnes").Activate

Range("I3:I65536").Select
Selection.Copy
Range("H3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

End Sub

Pour recadrer mon problème, je souhaite distinguer l'insertion, la modification et la suppression d'une ligne de ma feuille. Pour le moment, j'en suis à la modification qui est partiellement achevée, car j'ai un bug dans ma fonction de recherche par rapport à certaines cellules qui sont des listes de validation et qui ne sont prises en compte dans ma boucle. Si tu pourrais m'aider la dessus parce que je commence à sécher mais je continue de chercher. Pour l'insertion et la suppression je suis au point mort, puisque je ne sais pas comment les distinguer sans rajouter des boutons dans la feuille.

Je remercie d'avance ceux qui pourront m'aider. Je suis vraiment désolée pour la forme de mes pièces jointes.

A bientôt.
 

Pièces jointes

  • Structures.zip
    45.6 KB · Affichages: 22
  • Structures-Personnes.xls
    18.5 KB · Affichages: 62
  • Structures.zip
    45.6 KB · Affichages: 21
  • Structures.zip
    45.6 KB · Affichages: 21
  • Image personnes.JPG
    Image personnes.JPG
    19.8 KB · Affichages: 27

Taddy

XLDnaute Nouveau
Re : [Excel 2003] -Comment distinguer l'insertion, la modification et la suppression?

Bonjour le forum,

Je réactive cette discussion parce que je suis toujours confrontée au même problème. Je pensais l'avoir contourné mais ce n'est pas le cas.

Je recadre le problème :

Je dois différencier l'ajout, la modification et la suppression dans une feuille excel sans utiliser des boutons afin que ma macro, qui permet lors d'une modif de changer toutes les entrées présentes dans les autres onglets, ne s'exécute pas si je rajoute une nouvelle entrée.

Je ne peux toujours pas fournir de fichiers, donc pouvez vous me donner des pistes et je creuserai de mon côté.

Merci d'avance.
 

Taddy

XLDnaute Nouveau
Re : [Excel 2003] -Comment distinguer l'insertion, la modification et la suppression?

Merci vbacrumble,

Vous trouverez mon fichier sur ce lien :

Cijoint.fr - Service gratuit de dépôt de fichiers

Merci pour votre retour.
 

Taddy

XLDnaute Nouveau
Re : [Excel 2003] -Comment distinguer l'insertion, la modification et la suppression?

Oui c'est vrai désolée j'avais oublié....

voilà un nouveau lien pour télécharger le mm fichier mais sans mot de passe...

Cijoint.fr - Service gratuit de dépôt de fichiers

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87