Explication
Fermé
john_dodo
-
26 oct. 2017 à 16:09
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 27 oct. 2017 à 15:03
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 27 oct. 2017 à 15:03
A voir également:
- Explication
- Foyer netflix explication - Accueil - Guide streaming
- Paris multiple 2/6 explication - Forum Excel
- The descent 2 explication fin - Forum Cinéma / Télé
- The farm explication fin ✓ - Forum Cinéma / Télé
- Paris Sportifs Combinés - Forum Loisirs / Divertissements
4 réponses
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
Ambassadeur
1 557
26 oct. 2017 à 16:45
26 oct. 2017 à 16:45
bonjour, peux-tu partager le code VBA de michel_m?
macro à installer dans le module feuille "vacances"
dans la feuille "resume" B9 ne doit pas être vide (un espace suffit)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nom As String, Lig As Byte
If Not Intersect(Target, Range("B7:B47")) Is Nothing Then
Nom = Target.Offset(0, -1)
With Sheets("resume")
'suppression d'un X
If Target = "" Then
On Error GoTo fin
Lig = .Columns("B").Find(Nom, .Range("B9")).Row
.Rows(Lig).Delete
End If
'ajout d'un X
If Target = "X" Then
Lig = .Columns("B").Find("", .Range("B9")).Row
.Cells(Lig, "B") = Nom
End If
End With
End If
fin:
End Sub
dans la feuille "resume" B9 ne doit pas être vide (un espace suffit)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nom As String, Lig As Byte
If Not Intersect(Target, Range("B7:B47")) Is Nothing Then
Nom = Target.Offset(0, -1)
With Sheets("resume")
'suppression d'un X
If Target = "" Then
On Error GoTo fin
Lig = .Columns("B").Find(Nom, .Range("B9")).Row
.Rows(Lig).Delete
End If
'ajout d'un X
If Target = "X" Then
Lig = .Columns("B").Find("", .Range("B9")).Row
.Cells(Lig, "B") = Nom
End If
End With
End If
fin:
End Sub
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
26 oct. 2017 à 18:24
26 oct. 2017 à 18:24
Private Sub Worksheet_Change(ByVal Target As Range) Dim Nom As String, Lig As Byte If Not Intersect(Target, Range("B7:B47")) Is Nothing Then Nom = Target.Offset(0, -1) With Sheets("resume") 'suppression d'un X If Target = "" Then On Error GoTo fin Lig = .Columns("B").Find(Nom, .Range("B9")).Row .Rows(Lig).Delete End If 'ajout d'un X If Target = "X" Then Lig = .Columns("B").Find("", .Range("B9")).Row .Cells(Lig, "B") = Nom End If End With End If fin: End Sub
il faudrait un paragraphe pour décrire chaque ligne de code. y-a-t'il un élément précis que tu ne comprends pas? souhaites-tu adapter le code?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié le 27 oct. 2017 à 09:13
Modifié le 27 oct. 2017 à 09:13
Bonjour john_dodo
en espèrant que...
Michel
Option Explicit
'-----------------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nom As String, Lig As Byte
'la cellule "déclencheuse" (target) doit se trouver dans la zone B2;B47
If Not Intersect(Target, Range("B7:B47")) Is Nothing Then
'affectation de la nouvelle valeur de travail dans la colonne A
Nom = Target.Offset(0, -1)
'on travaille AVEC la feuille "resume"
'(les objets lignes, colonnes, cellule doivent ^tre alors précédés d'un point)
With Sheets("resume")
'si la cible est vide
If Target = "" Then
'on sort de la procédure
On Error GoTo fin
'sinon on supprime la ligne où se trouve "nom" après B9
Lig = .Columns("B").Find(Nom, .Range("B9")).Row
.Rows(Lig).Delete
End If
'si la cible est égale à "X"
If Target = "X" Then
'on cherche la première ligne vide dans la colonne B après B9
Lig = .Columns("B").Find("", .Range("B9")).Row
'on y ajoute la valeur de "nom"
.Cells(Lig, "B") = Nom
End If
End With
End If
'gestionnaire d'erreurs
'(règle d'algorithmique: toutes les sorties de procédure regroupées en fin de code)
fin:
End Sub
en espèrant que...
Michel
Bonjour a vous,
Tout d’abord merci bcp pour l'explication mais si je peut me permettre d'abuser de votre temps ...serait t'il possible d'etre un peut plus precis sur :
Lig = .Columns("B").Find(Nom, .Range("B9")).Row
.Rows(Lig).Delete
et
Lig = .Columns("B").Find("", .Range("B9")).Row
.Cells(Lig, "B") = Nom
Je comprend pas bien le .row et .rows
D'avance merci
Tout d’abord merci bcp pour l'explication mais si je peut me permettre d'abuser de votre temps ...serait t'il possible d'etre un peut plus precis sur :
Lig = .Columns("B").Find(Nom, .Range("B9")).Row
.Rows(Lig).Delete
et
Lig = .Columns("B").Find("", .Range("B9")).Row
.Cells(Lig, "B") = Nom
Je comprend pas bien le .row et .rows
D'avance merci
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié le 27 oct. 2017 à 15:12
Modifié le 27 oct. 2017 à 15:12
re,
Row est une propriété qui donne le numero de ligne où se trouve la valeur cherchée ; âr la fonction "find" (dans ce cas valeur vide)
Rows désigne l'objet "ligne"
une feuille (c'est un objet) a en autres 2 sous -objet colonne (columns) et ligne (rows)
comme tu débutes avec VBA
http://www.info-3000.com/vbvba/ ca date mais très pédagogique
puis ensuite plus "hard" mais très complet
https://bidou.developpez.com/article/VBA/
Row est une propriété qui donne le numero de ligne où se trouve la valeur cherchée ; âr la fonction "find" (dans ce cas valeur vide)
Rows désigne l'objet "ligne"
une feuille (c'est un objet) a en autres 2 sous -objet colonne (columns) et ligne (rows)
comme tu débutes avec VBA
http://www.info-3000.com/vbvba/ ca date mais très pédagogique
puis ensuite plus "hard" mais très complet
https://bidou.developpez.com/article/VBA/