Modification des lignes en fonction d'une valeur

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

1 réponse

  1. 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
    1. 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