Insertion ligne auto selon condition dans une colonne

Bonjour à vous, je m'appelle Cyanh et je plonge tout juste dans Excel pour des raisons pro, à savoir que je viens de changer de service et qu'on essaye d'informatiser un peu tout ça histoire de dépoussiérer, mais sans trop bousculer mémé... m'voyez?

Du coup je me suis lancé pour mission d'utiliser Excel pour créer un agenda pour des prises de rendez-vous. Et figurez vous que je suis tombé sur les fesses quand j'ai commencé à comprendre qu'Excel pouvait être un outil très puissant, seulement pour ça il faut mettre les mains dans le cambouis. Un grand pouvoir implique de grandes responsabilités parait-il et personnellement je n'ai pas prévu de conquérir le monde avec mon pauvre petit agenda...

Mon problème est que je suis limité dans le temps pour proposer quelque chose de potable, un premier jet simple (mais vraiment simple) et solide.

A l'heure actuelle ce qui m'intéresse le plus serait de pouvoir insérer une nouvelle ligne identique à la précédente selon la condition qu'on écrive "0" dans une des cases de la colonne "F"

Dans la colonne "F" le "0" signifierait que la personne annule son rendez-vous et le "1" signifierait que la personne est bien venue à son rendez-vous (donc rien ne change dans ce cas...). Si la personne annule son RDV, alors j'inscris "0" dans la case et hop c'est magique: une ligne identique apparaîtrait juste en dessous ce qui me permet de garder une trace du RDV manqué ET éventuellement de pouvoir proposer ce créneau à une autre personne.

Je vous met un lien pour jeter un oeil à mon ébauche (volontairement vide par souci de discretion)

J'ai beau chercher sur les forums ou lire des tutos, je me sens complètement perdu

Toute aide serait la bienvenue, je suis au bord du gouffre qui me condamnerait à proposer quelque chose de pas top top à mes nouveaux collègues...

Qui plus est la prise de RDV sur papier c'est vraiment pas l'idéal dans ce cadre là

En attendant je vous remercie d'avoir ne serait-ce que lu ma détresse, je vous souhaite une bonne journée

Bonjour,

Pour une action du type que tu souhaites, on utilise une procédure d'évènement, c'est à dire une macro qui se lance automatiquement lorsqu'un évènement défini survient.

Au cas particulier, l'évènement est un changement de valeur dans une ou plusieurs cellules de la feuille (évènement Change). Chaque fois qu'il survient, une procédure se déclenchera qui commencera par regarder où et comment se déroule l'évènement : s'il affecte plusieurs cellules on l'ignorera, s'il n'en affecte qu'une on regarde dans quelle colonne ça se passe, hors de la colonne F, on ignore, en F on regardera la valeur, si 1 on ne fait rien, si 0 on dédouble la ligne...

Il conviendrait à cet égard que tu soies plus précis : ta façon de l'indiquer laisserait entendre que l'on va reproduire la ligne telle qu'elle est, or si tu veux l'utiliser à nouveau la seule mention devant être reproduite est l'heure en col. A ?

D'autre part, faut-il insérer la nouvelle ligne avant ou après la ligne initiale ?

Tous les détails sont nécessaires si tu veux obtenir le résultat souhaité.

Cordialement.

Bonjour MFerrand,

Merci pour ton intervention rapide.

Il était tard et effectivement je n'ai pas été assez clair.

Ce que je voudrais c'est que si la personne qui a pris rendez vous à 11:15 (exemple) me rappelle pour annuler, j'indique "0" dans la case "F" de sa ligne 11:15 et il en résulterait une insertion de ligne "en dessous" indiquant uniquement 11:15 dans la ligne nouvellement insérée.

Ca me permettrait de garder la trace du rdv annulé ET de voir très rapidement que le créneau est désormais disponible.

Ne "rien" indiquer ou indiquer "1" fans la case "F" ne modifierait rien et ne sert "que" d'information.

Je voudrais que cela s'applique à toutes les cases "F" bien entendu, sinon ce n'est pas drôle...

Re,

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim n%
    If Not IsNumeric(Sh.Name) Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Target.Column = 6 Then
        If Target = 0 Then
            n = Target.Row + 1
            Sh.Rows(n).Insert
            Sh.Range("A" & n) = Sh.Range("A" & n - 1)
            Sh.Range("A" & n & ":G" & n).Borders.Weight = xlThin
        End If
    End If
End Sub

Procédure placée dans le module ThisWorkbook, car plusieurs feuilles sont concernées.

Un test est fait sur le caractère numérique du nom de la feuille pour savoir si l'action doit s'exécuter, puis test sur le nombre de cellules impactées et enfin sur la colonne avant d'examiner la valeur de la cellule.

La zone utile de ton fichier étant mal délimitée à droite, il m'a semblé préférable d'opter pour l'insertion d'une ligne entière...

Toutefois pour la dernière ligne utile qui rétablit les bordures sur la ligne insérée (généralement automatiques mais pas dans tous les cas...), je l'ai limitée de A à G (qui semble être l'extension des données).

Je conseillerais de ne pas étendre tes colorations et bordures à la feuille entière, mais les limiter à la zone utile...

Cordialement.

Je te remercie de nouveau cette fois pour toutes ces infos et pour le code!

Je teste tout ça dès que j'accède à mon ordinateur, je te tiens au courant de ma progression.

A très vite

Ca y est le couperet tombe, je ne vais pas y aller par 4 chemins: c'est exactement ce que j'espérais obtenir!

Merci mille fois pour ces conseils et ce gros coup de pouce, ça me soulage de voir que c'était réalisable... Excel a encore bien des choses à me montrer.

Il ne me reste plus qu'à essayer, en partant de là, de bien comprendre les tenants et aboutissants à partir de cet exemple précis.

C'est juste nickel, grâce à toi le projet passe la deuxième

à très bientôt!

[topic résolu pour ma part]

Rechercher des sujets similaires à "insertion ligne auto condition colonne"