Modification des lignes en fonction d'une valeur

mir.kan Messages postés 181 Statut Membre -  
mir.kan Messages postés 181 Statut Membre -
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. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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. mir.kan Messages postés 181 Statut Membre
       
      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