XL 2010 code VBA

salimoida

XLDnaute Nouveau
Bonjour,
j'ai besoin de votre aide les amis,
j'aimerais avoir un macro qui me permet de rajouter un nombre de lignes défini avec un format respecté,en fait je travail avec les dates,j’aimerais que le fait de définir une date de départ et une autre de fin la différence des jours soit convertie en lignes ex: le départ 01/01/2019 fin 06/01/2019 donc 6 jours.......six lignes se rajoute automatiquement?
je vous remercie.
 

eriiic

XLDnaute Barbatruc
Bonjour,

un double-clic sur une date te demande la date de fin (ou le nombre de jours) et les inscrit en dessous.
Attention, écrase ce qu'il y a sans contrôle.
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim nb, i As Long, dat() As Date
    If Target.NumberFormat Like "*/*/*" Then
        Cancel = True
        nb = InputBox("Date fin ou nombre total de jours", "Combien")
        If Len(Replace(nb, "/", "")) + 2 = Len(nb) Then nb = DateValue(nb) - Target Else nb = Val(nb) - 1
        ReDim dat(1 To nb, 1 To 1)
        For i = 1 To nb
            dat(i, 1) = Target + i
        Next i
        Target.Offset(1).Resize(nb) = dat
        Target.Offset(1).Resize(nb).NumberFormat = Target.NumberFormat
    End If
End Sub
eric
 

Pièces jointes

  • Classeur1.xlsm
    15.7 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour salimoida, bienvenue sur XLD, salut eriiiic,

Exécutez cette macro :
VB:
Sub InsererDates()
Dim deb$, fin$, h&
While Not IsDate(deb)
    deb = InputBox("Date de début :", , deb)
    If deb = "" Then Exit Sub
Wend
While Not IsDate(fin)
    fin = InputBox("Date de fin >= " & CDate(deb) & " :", , fin)
    If fin = "" Then Exit Sub
    h = CDate(fin) - CDate(deb) + 1
    If h <= 0 Then fin = ""
Wend
ActiveCell.Resize(h).Insert xlDown
ActiveCell = CDate(deb)
ActiveCell.Resize(h).DataSeries
End Sub
A+
 

salimoida

XLDnaute Nouveau
Bonjour,

un double-clic sur une date te demande la date de fin (ou le nombre de jours) et les inscrit en dessous.
Attention, écrase ce qu'il y a sans contrôle.
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim nb, i As Long, dat() As Date
    If Target.NumberFormat Like "*/*/*" Then
        Cancel = True
        nb = InputBox("Date fin ou nombre total de jours", "Combien")
        If Len(Replace(nb, "/", "")) + 2 = Len(nb) Then nb = DateValue(nb) - Target Else nb = Val(nb) - 1
        ReDim dat(1 To nb, 1 To 1)
        For i = 1 To nb
            dat(i, 1) = Target + i
        Next i
        Target.Offset(1).Resize(nb) = dat
        Target.Offset(1).Resize(nb).NumberFormat = Target.NumberFormat
    End If
End Sub
eric
 

eriiic

XLDnaute Barbatruc
Si tu ne donnes pas tous les éléments dès le départ c'est que tu prends à ton compte l'adaptation à ton cas concret.
Tu n'as plus qu'à te retrousser les manches ;-)
Et tu peux saluer job également et faire un retour sur sa proposition.
 

NIZAROVICH

XLDnaute Nouveau
bonjour
SVP pourvez vous m'aider sur ce fichier, j'ai besoin que excel recherche la valeur que j'ai sur la colonne B depuis la colonne A et afficher le résultat de recherche sur la colonne D; je vous remercie énormément
 

Pièces jointes

  • Classeur1 (1).xlsx
    135.1 KB · Affichages: 3

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87