separer un nombre

aurelien02

XLDnaute Nouveau
bonjour,

j'aimerais séparer un nombre en plusieurs lignes, c'est a dire :

j'aimerais que si je mette 3 en a1, il écrive 1 en b1 puis 1 en b2 et 1 en b3


c'est en fait pour améliorer le "logiciel de facturation de camping" que j'ai fait avec excel, il faudrait que je séparer les nuitées pour en ajouter seulement 1 par jour, mais si il reste 3 jours, il faut en ajouter 1 par jour pendant 3 jours

il faut peut etre faire ca en macro, je doute que les formules soit suffisantes pour ca

merci

aurelien
 

Hulk

XLDnaute Barbatruc
Re : separer un nombre

Hello Aurélien, Forum,

Si bien compris, vois ce petit code..
Code:
Private Sub CommandButton1_Click()
    
    For lign = 1 To Range("A1").Value
        Cells(lign, 2).Value = 1
    Next lign
    
End Sub
EDIT :

Pour que ça le fasse qu'en modifiant la cellule A1... À coller dans le code de la feuille.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim derLign, lign As Long
    
    On Error Resume Next
    
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        derLign = Range("B1000").End(xlUp).Row
        Range("B1:B" & derLign) = ""
        For lign = 1 To Target
            Cells(lign, 2) = 1
        Next lign
    End If

End Sub
 
Dernière édition:

aurelien02

XLDnaute Nouveau
Re : separer un nombre

je saisis les clients dans l'onglet touriste, j'ai un onglet taxe de sejour, il faudrait que j'ai le nombre de nuitée dans le 2eme tableau de cet intercalaire.

si une personne vient 2 nuits a partir d'aujourd'hui, il faudrait que ca marque 1 dans la case 14/06/2013 et 1 dans la case 15/06/2013

que ca fasse la somme avec les chiffres deja presents

ps je me debrouillerais pour inclure le code dans un bouton, j'en ai deja un pour ramener toutes les infos de la page touriste vers la page fiche de police, ca le fera en meme temps

la piece jointe ne passe pas par le site, elle pese 3mo, je vais la up sur autre chose je vous mets le lien apres

merci
 

aurelien02

XLDnaute Nouveau
Re : separer un nombre

je viens d'essayer le code de hulk, mais il ne marche, pas, ou bien je ne m'en sert pas correctement, quand je mets apr exemple 2 dans a1, j'ai rien qui s'affiche, mais ca fait quelque chose sur les cellules b1 et b2, car si je met quelque chose dedans, ça disparait

merci encore, désoler d'insister, mais le truc c'est que si ca n'est pas fait ce soir, je vais me taper toutes les taxes de séjours et les arrivées a la main
 

Hulk

XLDnaute Barbatruc
Re : separer un nombre

Re,

Parfois je ne comprends plus Excel :cool:

Teste ceci dans une nouvelle feuille.

1) Mets "Nuitées" en A1:B1 (fusionnées si tu veux)
2) Mets "Somme" en C1
3) Mets par exemple 5 dans A2 (En A2 donc tu mets le nombre de nuitées)
4) Mets un CommandButton (ActiveX) sur la feuille et ajoute-lui ce code ci-dessous et vois.
Code:
Private Sub CommandButton1_Click()
    
    Dim derLign, lign, somme As Long
    
    On Error Resume Next
    
    somme = Cells(2, 3)
    derLign = Range("B1000").End(xlUp).Row
    
    If Range("A2") <> "" Then
        For lign = 1 To Range("A2")
            Cells(derLign + lign, 2) = 1
            somme = somme + 1
        Next lign
    End If
    
    Cells(2, 3) = somme

End Sub
Normalement, si j'ai bien compris, ça fait ce que tu souhaites.

Maintenant si on fait le même code (à peu près) sur la feuille directement pour que ça agisse en modifiant A2, ça ne joue plus ou du moins il m'a semblé que ça jouait, mais plus maintenant !?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim derLign, lign, somme As Long
    
    On Error Resume Next
    
    somme = Cells(2, 3)
    derLign = Range("B1000").End(xlUp).Row
    
    If Not Intersect(Target, Range("A2")) Is Nothing Then
        For lign = 1 To Target.Value
            Cells(derLign + lign, 2) = 1
            somme = somme + 1
        Next lign
    End If
    
    Cells(2, 3) = somme
    
End Sub
Bref, avec le bouton ça joue, mais avec un peu de patience, un pro trouvera bien la solution !
 
Dernière édition:

aurelien02

XLDnaute Nouveau
Re : separer un nombre

je vais essayer avec la méthode,
en fait, le nombre de nuitée sera pris sur l'onglet touriste en B17, et il faudra que quand je clique sur le bouton retour de la feuille touriste, qui efface la facture et enregistre les infos sur la feuille fiche de police avec une macro, complète en plus le 2eme tableau de la feuille taxe de sejour, en separant les nuites en plusieurs nuits si il y en a plusieurs

voila

merci encore
 

aurelien02

XLDnaute Nouveau
Re : separer un nombre

ok le premier code a l'air de marcher je vais l'adapter, par contre au niveau de la somme, en fait, j'aurai plusieurs clients par jour, la ligne nuitée de aujourd'hui va donc par exemple déjà contenir des nombre et c'est a ce nombre qu'il faudrait ajouter les 1 que tu as crée avec la macro, en fait c'est pas la somme de 1 que je voudrait, mais plutôt que les 1 crée s'ajoutent a ceux déjà ajoutés avant dans le tableau de l'onglet taxe de séjour

merci
 

aurelien02

XLDnaute Nouveau
Re : separer un nombre

j'explique mal ce que je veux, je vais etre tres bref mais clair, ca sera plus facile a comprendre

en feuille taxe de sejour il y a un tableau avec des dates vide a droite

j'aimerais que quand je remplis la facture en feuille touriste et que je clique sur le bouton retour, ca sépare et classe les nuitées
un exemple, une personne vient aujourd'hui, elle reste 2 nuits, il faudrait que quand je clique sur retour, ca mette 1 nuit au 14/06/2013 et 1 au 15/06/2013

si une 2eme vient aujourd'hui et reste 3 nuits, il y aura 1 autre nuit au 14/06/2013 additionnée a la précédente (on aura donc 2 dans la case en face de 14/06/2013) pareil pour le 15/06/2013 et 1 au 16/06/2013

voila, c'est plus clair

merci
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : separer un nombre

Bonjour aurelien, Bruno,

Je ne suis pas parvenu à télécharger le fichier, alors j'ai fait le mien :cool:

La macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, n As Long
Set r = Intersect(Target, [A:A], Me.UsedRange)
If r Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
For Each r In r
  n = r.MergeArea.Rows.Count
  If n > 1 Then
    r.UnMerge 'défusionne
    r(1, 2).Resize(n).ClearContents
    If IsEmpty(r) Then r(2, 1).Resize(n - 1, 2).Delete xlUp
  End If
  n = Int(Val(r.Text))
  If n > 0 Then r(1, 2) = 1
  If n > 1 Then
    r(2, 1).Resize(n - 1, 2).Insert xlDown
    r(2, 2).Resize(n - 1) = 1
    r.Resize(n).Merge 'fusionne
  End If
Next
If Target(1).MergeArea.Count > 1 Then Target.Select
Application.EnableEvents = True
End Sub
La fusion des cellules en colonne A est bien utile.

A+
 

Pièces jointes

  • Ajout lignes(1).xls
    40 KB · Affichages: 56
  • Ajout lignes(1).xls
    40 KB · Affichages: 63
  • Ajout lignes(1).xls
    40 KB · Affichages: 68

aurelien02

XLDnaute Nouveau
Re : separer un nombre

c'est ca, est il possible, plutôt que de les ecrire a la suite dans la colonne, de les mettre en face, ici, j'ai laisser 5 dans a1, il faudrait que ca ecrive 1 dans 14/06/2013 puis les autres 1 en face des autres dates, a la suite du 14/06/2013.

enfin, pourrait on exécuter cette macro a l'aide du bouton que j'ai crée et on sera parfait

merci beaucoup de votre aide
:D
 

Pièces jointes

  • Ajout lignes(1).xls
    47.5 KB · Affichages: 56
  • Ajout lignes(1).xls
    47.5 KB · Affichages: 66
  • Ajout lignes(1).xls
    47.5 KB · Affichages: 66

Discussions similaires