Modification des lignes en fonction d'une valeur
mir.kan
Messages postés
181
Statut
Membre
-
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
merci d'avance
1 réponse
-
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).-
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
-