Insertion colone

Boriserge Messages postés 4 Statut Membre -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis en cours de création d'un planning, type semainier, je cherche à faire une macro pour insérer une colonne avant chaque "lundi", sauf s'il y a déja une colonne vide

2 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Et qu'as tu commencé à faire ? Sur quoi bloques tu exactement ? comment se présentent tes données ?
    Un minimum de détail pourra aider les volontaires à te répondre ^^

    0
  2. Boriserge Messages postés 4 Statut Membre
     
    A chaque colonne correspond une date (de colonne B à NG pour le moment). Je souhaite garder une colonne vide avant chaque début de semaine pour y inscrire diverses informations sur mon planning.
    Par soucis d'économie de temps je souhaiterai ne pas avoir à insérer les colonnes une par une, surtout qu'il est fort probable que le nombre de colonne augmente.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu ne m'as pas répondu concernant ce que tu as commencé à faire ( sous entendu... à coder)
      Dans le cas où tu n'aurais rien commencé....
      Voici de quoi démarrer :
      Faire une boucle sur chaque cellule de ta ligne de dates
      https://silkyroad.developpez.com/vba/boucles/#LII

      Vérifier le jour de la date correspondant pour trouver les "lundi"
      Lire la "valeur" d'une cellule
      https://docs.microsoft.com/fr-FR/office/vba/api/Excel.Range.Value
      Vérifier le jour :
      https://www.excelfunctions.net/vba-weekday-function.html
      https://www.excel-pratique.com/fr/vba/conditions.php

      Insérer des colonnes
      https://analysistabs.com/excel-vba/inserting-columns-worksheet/
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      En gros :
      Sub ajoutcolLundi()
      Dim numJour As Integer
      Dim d As Date
      Dim rng As Range
      Dim i As Long
      Dim col As Long
      Set rng = Sheets(1).Range("A1:AX1")
      nbcol = rng.Count
      For i = nbcol To 1 Step -1
          d = CDate(rng(i).Value)
          numJour = Weekday(d, vbMonday)
          If numJour = 1 Then
              Sheets(1).Columns(i).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
          End If
      Next
      
      
      End Sub
      
      0
      1. Boriserge Messages postés 4 Statut Membre > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci beaucoup, cela marche presque bien avec des ajustements de nom :

        La colonne est ajouté avant le dimanche et non le lundi, mais j'ai résolu ça


        Sub ajoutcolLundi()
        Dim numJour As Integer
        Dim d As Date
        Dim rng As Range
        Dim i As Long
        Dim col As Long
        Set rng = Sheets("Sheet1").Range("B3:NW3")
        nbcol = rng.Count
        For i = nbcol To 1 Step -1
        d = CDate(rng(i).Value)
        numJour = Weekday(d, vbMonday)
        If numJour = 2 Then
        Sheets("Sheet1").Columns(i).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        End If
        Next


        End Sub


        Ce pendant je voudrais ajouter une exception s'il y a déja une colonne vide
        0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ben tu fais un if pour voir si la cellule précédente est vide ou non.
      0