Modification des lignes en fonction d'une valeur

Fermé
mir.kan Messages postés 178 Date d'inscription mardi 6 septembre 2016 Statut Membre Dernière intervention 26 avril 2018 - 5 oct. 2016 à 12:35
mir.kan Messages postés 178 Date d'inscription mardi 6 septembre 2016 Statut Membre Dernière intervention 26 avril 2018 - 7 oct. 2016 à 11:00
Bonjour, j'ai besoin vraiment de votre aide .En fait j'ai deux classeurs et j'aimerais en cas de modification de toutes les lignes d’une liste en fonction d’une valeur contenue dans un champ que ça les transfère automatique sur l'autre classeur.
merci d'avance
A voir également:

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
6 oct. 2016 à 17:47
Bonjour,

- Pour détecter automatiquement la modification d'une valeur, utilises l'évènement Change de la feuille.
- Pour trouver les cellules impactées par cette modification, utilises la méthode ShowDependents de la cellule modifiée et la méthode NavigateArrow pour trouver chaque cellule correspondant à chaque flèche.
- Finalement la méthode Copy permet de transférer ces données vers un autre classeur.

N'hésites pas à utiliser l'aide VBA (F1).
0
mir.kan Messages postés 178 Date d'inscription mardi 6 septembre 2016 Statut Membre Dernière intervention 26 avril 2018
7 oct. 2016 à 11:00
Bonjour,

j'aimerais d'abord modifier automatique mes feuilles d'Excel(j'en ai 6 mais je veux modifier que les 3).voici le code mais ça ne marche pas .Pourriez vous m'aider svp

Dim LigneModifiee As Long
LigneModifiee = 10 + Me.SiteModifier_Liste.ListIndex
With LesSites
Cells(LigneModifiee, 1) = Me.NomSite_Champ
.Cells(LigneModifiee, 2) = Me.AdresseSite_Champ
.Cells(LigneModifiee, 3) = Me.TypeSite_Liste
'.Cells(LigneModifiee, 4) = Me.CiviliteResponsableSite_Cadre
.Cells(LigneModifiee, 5) = Me.NomResponsableSite_Champ
.Cells(LigneModifiee, 6) = Me.PrenomResponsableSite_Champ
.Cells(LigneModifiee, 7) = Me.DepartementResponsableSite_Liste
'Sélection de la feuille "plans"
LesPlans.Activate
Dim LigneCopieePlan As Long
'Affectation du numéro de la ligne de début de données à la variable LigneCopieePlan
LigneCopieePlan = 10
Dim LigneFinDonneesDomaine As Long
LigneFinDonneesDomaine = LesPlans.[A1048576].End(xlUp).Row
While ((Cells(LigneCopieePlan, 4) <> NomResponsableSiteAvantModification _
Or Cells(LigneCopieePlan, 2) <> AdresseSiteRATPAvantModification _
Or Cells(LigneCopieePlan, 5) <> PrenomResponsableSiteAvantModification) _
And LigneCopieePlan <= LigneFinDonneesDomaine)
LigneCopieePlan = LigneCopieePlan + 1
Wend
If (LigneCopieePlan > LigneFinDonneesDomaine) Then
MsgBox "Correspondance non trouvée dans la feuille [Plans ] du classeur [Gestion des Plans ]" & vbCrLf & vbCrLf & _
"La modification ne s'est donc pas effectuée sur cette feuille.", _
vbExclamation + vbOKOnly, _
"Pas de correspondance dans la feuille [Plans] du classeur [Gestion des Plans ]"
Else
If (NomResponsableSiteAvantModification <> Me.NomResponsableSite_Champ) Then

LesSites.Activate
LesSites.Cells(LigneModifiee, 1).EntireRow.Select
Selection.Copy
LesPlans.Activate
Dim NouvelleLigneFinDonneesDomaine As Long

NouvelleLigneFinDonneesDomaine = LesPlans.[A1048576].End(xlUp).Row
LesPlans.Cells(NouvelleLigneFinDonneesDomaine + 1, 1).EntireRow.Select

Selection.PasteSpecial
LesPlans.Cells(LigneCopieePlan, 1).Delete Shift:=xlUp

Else

LesSites.Activate
'Sélection de la nouvelle ligne ajoutée (fichier Gestion des Plans de Prévention)
LesSites.Cells(LigneModifiee, 1).EntireRow.Select
'Copie de la ligne sélectionnée
Selection.Copy
'Sélection du classeur ouvert
LesPlans.Activate
'Sélection de la cellule correspondant à la référence du Plan à dupliquer
LesPlans.Cells(LigneCopieePlan, 1).Select
'Collage des données sur la ligne
Selection.PasteSpecial

End If
End If
0