Transfert de données sur plusieurs onglet en fct de l'année
Bonjour,
J'aurais besoin de vos lumières pour régler un pb.
Dans une fiche client, je vais renseigner différents besoins (Pour chacun de ces besoins, il y aura une facturation)
En fin de création de la fiche client, un nouveau classeur est ouvert sur un onglet prévisionnelle de l'année en cours (dans notre cas, 2017).
Dans une colonne A va être renseigné le nom du client et dans une colonne B, l'ensemble de ses besoins. Les Colonnes C à N représentent les mois de l'année (voir document en pièce jointe).
J'aurais besoin de renseigner les différentes lignes de facturation en fonction du mois, sachant que:
Facturation1 = X
Facturation2 = X+4 (mois)
Facturation3 = X+4 (mois)
Facturation4 = X+7 (mois)
Facturation5 = X+8 (mois)
Facturation6 = X+8 (mois)
Facturation7 = X+8 (mois)
Facturation8 = X+9 (mois)
Facturation9 = X+9 (mois)
Facturation10 = X+10 (mois)
Facturation11= X+11 (mois)
Facturation12 = X+14 (mois)
Facturation13 = X+14 (mois)
Facturation14 = X+15 (mois)
Avec "X" une date renseignée en cellule B17 du classeur en cours (onglet "Client")
Dans le meilleur des cas, je vais devoir renseigner sur 2 onglets différents (et sur 3 dans le pire des cas ...)
Je n'ai aucune idée de comment gérer ce changement d'onglet et comment réapprovisionner le nouvelle onglet avec les besoins qui n'ont pas été renseignés dans le premier.
Mon code actuel:
Private Sub test()
Dim Copie(33) As String, j%, i%, k%, derLigne As Integer, derLigne2 As Integer, plop As Integer, previ As Worksheet, name As Range
With ThisWorkbook.Worksheets("Clients")
Copie(0) = .Range("B4")
For i = 1 To 6
Copie(i) = .Range("A" & i + 15)
Next i
k = 6
For j = 7 To 33
If (.Range("B" & j + 17)) <> "" Then
k = k + 1
Copie(k) = .Range("A" & j + 17)
End If
Next j
End With
Workbooks.Open "C:\Users\XXXXX\Desktop\Ent\prev.xlsm" '
Set previ = ActiveWorkbook.Worksheets("Prév2017")
derLigne = previ.Range("b" & Rows.Count).End(xlUp).Row + 1
plop = previ.Range("b" & Rows.Count).End(xlUp).Row + 1
previ.Cells(derLigne, 1).Value = Copie(0)
For k = LBound(Copie) + 1 To UBound(Copie)
previ.Cells(derLigne, 2).Value = Copie(k)
derLigne = derLigne + 1
Next k
derLigne2 = previ.Range("b" & Rows.Count).End(xlUp).Row
With Sheets("Prévisionnel 2017").Range(Cells(plop, 1), Cells(derLigne2, 14))
.Borders.Weight = xlThin
.Borders(xlInsideVertical).Weight = xlMedium
.Borders(xlEdgeBottom).Weight = xlMedium
End WithMerci pour votre aide
Personne? Trop compliqué? Pas possible?
Bonjour,
Après relecture de ma demande, je pense qu'elle est peut être difficile à comprendre, donc pour faire simple:
Dans une fiche client, je rentre différent montant de facturation qui doivent intervenir à des dates différentes, dans un classeur1 (via formulaire):
Après avoir validé mon formulaire, le tableau du classeur1 ci-dessus est remplie avec les informations renseignées
De plus le classeur 2 ci dessous s'ouvre, est renseigné automatiquement avec le nom du client, les intitulés des factures:
Pour l'instant, toute cette partie fonctionne.
Ce que je voudrais maintenant, c'est que le classeur2 soit aussi remplie automatiquement avec le montant des factures en fonction des dates, sachant que l'ensemble des dates vont être définie en fonction de la date renseignée en case B17:
Fact1 = X (correspondant à la date renseignée en B17)
Fact2 = X+4 (mois)
Fact3 = X+4 (mois)
Fact4 = X+7 (mois)
Fact5 = X+8 (mois)
Fact6 = X+8 (mois)
Fact7 = X+8 (mois)
Fact8 = X+9 (mois)
Fact9 = X+9 (mois)
Fact10 = X+10 (mois)
Fact11= X+11 (mois)
Fact12 = X+14 (mois)
Fact13 = X+14 (mois)
Fact14 = X+15 (mois)
C'est déjà un premier pb pour moi. Ensuite, comme on peut le voir sur la seconde photo, il y a un onglet par année, et, selon toute logique, la fact1 et la fact12 (par exemple) ne peuvent se trouver sur le même onglet (car ne se trouveront pas sur la même année).
Il faudrait donc, dans ce cas, que le nom du client, l'intitulé de la facture et le montant de la fact12 (par exemple) soit copié dans la bonne case dans le nouvelle onglet (correspondant à l'année suivante).
J'espère que mon explication est plus compréhensible maintenant.
Merci pour votre aide.
Bonjour,
Je vais découper mon pb en petit morceau:
J'ai créé un formulaire pour pouvoir créer de nouveau client. A partir de ce formulaire, une fiche cliente est renseigné automatiquement avec les informations du formulaire.
Ce formulaire contient aussi des intitulé de facture avec leur montant et leur date de facturation.
En plus de la fiche client renseigné automatiquement, une nouveau classeur doit être renseigné avec les montant des factures en fonction de la date.
Pour l'instant, ce nouveau classeur s'ouvre sur le bon onglet, sur la dernière ligne disponible, le nom du client est renseignée en colonne A, les intitulés de facture en colonne B
Je n'arrive pas à insérer le montant des différentes factures en fonction des dates saisies dans le formulaire et des intitulé s des factures
Private Sub CommandButton1_Click()
Dim Copie(33) As String, j%, i%, k%, p%, derLigne As Integer, derLigne2 As Integer, plop As Integer, previ As Worksheet, name As Range, dateref As Date, montant(33), dateact As Range
With ThisWorkbook.Worksheets("Clients")
dateref = .Range("B17")
Copie(0) = .Range("B4")
For i = 1 To 6
Copie(i) = .Range("A" & i + 15)
montant(i) = .Range("B" & i + 15)
Next i
k = 6
For j = 7 To 33
If (.Range("B" & j + 17)) <> "" Then
k = k + 1
Copie(k) = .Range("A" & j + 17)
montant(k) = .Range("D" & j + 17)
End If
Next j
End With
Workbooks.Open "C:\Users\XXXXX\Desktop\ENT\TABLEAUX AVANCEMENT PAIEMENT.xlsx" '
Set previ = ActiveWorkbook.Worksheets("Prévisionnel 2017")
derLigne = previ.Range("b" & Rows.Count).End(xlUp).Row + 1
plop = previ.Range("b" & Rows.Count).End(xlUp).Row + 1
previ.Cells(derLigne, 1).Value = Copie(0)
For k = LBound(Copie) + 1 To UBound(Copie)
previ.Cells(derLigne, 2).Value = Copie(k)
derLigne = derLigne + 1
Next k
derLigne2 = previ.Range("b" & Rows.Count).End(xlUp).Row
With Sheets("Prévisionnel 2017").Range(Cells(plop, 1), Cells(derLigne2, 14))
.Borders.Weight = xlThin
.Borders(xlInsideVertical).Weight = xlMedium
.Borders(xlEdgeBottom).Weight = xlMedium
End With
With Sheets("Prévisionnel 2017").Range(Cells(plop, 1), Cells(derLigne2, 1))
.Merge
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End Sub