Insertion colone

Fermé
Boriserge Messages postés 4 Date d'inscription mardi 2 janvier 2018 Statut Membre Dernière intervention 11 avril 2018 - 10 avril 2018 à 18:41
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 11 avril 2018 à 09:57
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

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
10 avril 2018 à 20:04
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
Boriserge Messages postés 4 Date d'inscription mardi 2 janvier 2018 Statut Membre Dernière intervention 11 avril 2018
10 avril 2018 à 23:16
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
11 avril 2018 à 00:28
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
11 avril 2018 à 00:28
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
Boriserge Messages postés 4 Date d'inscription mardi 2 janvier 2018 Statut Membre Dernière intervention 11 avril 2018 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
Modifié le 11 avril 2018 à 09:24
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
11 avril 2018 à 09:57
Ben tu fais un if pour voir si la cellule précédente est vide ou non.
0