Explication
john_dodo
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Novice en VBA je viens de tester le code de michel_m qui marche a merveille(merci beaucoup),mais que je ne comprend absolument pas le moins du monde ...serait'il d'avoir une petite explication.
D'avance merci
Novice en VBA je viens de tester le code de michel_m qui marche a merveille(merci beaucoup),mais que je ne comprend absolument pas le moins du monde ...serait'il d'avoir une petite explication.
D'avance merci
A voir également:
- Explication
- Foyer netflix explication - Accueil - Guide streaming
- Paris multiple 2/6 explication ✓ - Forum Loisirs / Divertissements
- La blague des trois nains explication ✓ - Forum Loisirs / Divertissements
- Another earth explication fin - Forum Cinéma / Télé
- Chambre 1408 explication fin ✓ - Forum Cinéma / Télé
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
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?
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
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/