XL 2021 Remplir données devis en vba avec descriptions/quantités/PUs alignés

Claudinedu13

XLDnaute Nouveau
Bonsoir,
Grâce à plusieurs d'entre vous , je progresse sur la construction de formulaires/codes mais je bloque sur un de ces codes.
Dans mon classeur de test sur ma feuil1 je clique sur une ligne/cellule de la liste des devis puis sur le bouton "Sélectionner une ligne/cellule puis cliquer ici pour remplir le devis" , ça va remplir dans le devis le numéro, le nom et les descriptions (qui peuvent comporter 1 à plusieurs lignes) , je bloque pour aligner la quantité et le prix unitaire en face de la dernière ligne de la description, je souhaite un affichage comme ci dessous.
Je vous remercie et j'espère que vous comprendrez ma demande ...

Remplissage devis.jpg




VB:
Sub Selection_ligne()

Dim CC As Range
Set CC = Selection

If Not CC Is Nothing Then

   With ActiveWorkbook.Sheets("Feuil2")
  
   Range("Zone_devis").ClearContents
   Range("Zone_client").ClearContents
  
   Sheets("Feuil2").Range("NumDevis").Value = Cells(CC.Row, 1).Value
   Sheets("Feuil2").Range("NomClient").Value = Cells(CC.Row, 2).Value
  
    Dim ws2 As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim i As Long
    Dim lines() As String
    Dim line As Variant
    
   'Cellule des quantités et P.U (4,5/7,8/10,11)
    Set ws2 = ThisWorkbook.Sheets("Feuil2")
    Set rng = Union(Cells(CC.Row, 3), _
                   Cells(CC.Row, 6), _
                    Cells(CC.Row, 9))
    
    i = 9
    For Each cell In rng
        If cell.Value <> "" Then
            lines = Split(cell.Value, Chr(10))
            For Each line In lines
                ws2.Cells(i, "A").Value = line
                i = i + 1
            Next line
            i = i + 1
        End If
    Next cell
      
   Sheets("Feuil2").Activate

   End With
  
End If
 

Pièces jointes

  • TestRemplissageDevis.xlsm
    34.1 KB · Affichages: 3

Claudinedu13

XLDnaute Nouveau
Bonjour @Phil69970
Encore 2 petit soucis pour moi,
1/ Pour la colonne 6(F) si c'est une donnée multiligne , il n'y a que la 2 ème ligne qui s'affiche dans ma feuil2.
2/ Dans ma feuil2 la hauteur de ligne reste étendu même si elle reçoit juste une ligne.
Merci

colonne6feuil1.jpg
colonne6feuil2.jpg

VB:
Sub Selection_ligne()

Dim CC As Range
Set CC = Selection

If Not CC Is Nothing Then

   With ActiveWorkbook.Sheets("Feuil2")
  
   Range("Zone_devis").ClearContents
   Range("Zone_client").ClearContents
  
   Sheets("Feuil2").Range("NumDevis").Value = Cells(CC.Row, 1).Value
   Sheets("Feuil2").Range("NomClient").Value = Cells(CC.Row, 2).Value
   Sheets("Feuil2").Range("A9").Value = Cells(CC.Row, 3).Value
   Sheets("Feuil2").Range("E9").Value = Cells(CC.Row, 4).Value
   Sheets("Feuil2").Range("F9").Value = Cells(CC.Row, 5).Value
   Sheets("Feuil2").Range("A11").Value = Cells(CC.Row, 6).Value
   Sheets("Feuil2").Range("E11").Value = Cells(CC.Row, 7).Value
   Sheets("Feuil2").Range("F11").Value = Cells(CC.Row, 8).Value
   Sheets("Feuil2").Range("A13").Value = Cells(CC.Row, 9).Value
   Sheets("Feuil2").Range("E13").Value = Cells(CC.Row, 10).Value
   Sheets("Feuil2").Range("F13").Value = Cells(CC.Row, 11).Value
      
   Sheets("Feuil2").Activate

   End With
  
End If

End Sub
 

Pièces jointes

  • TestRemplissageDevis.xlsm
    36.5 KB · Affichages: 2

Claudinedu13

XLDnaute Nouveau
bonjour @Phil69970
J'ai avancé dans la mise en place de ton code , j'ai juste un problème, quand on a plusieurs descriptions longues, ça décale le bas de page sur une deuxième feuille. J'ai laissé la feuil test qui déborde (devis n°5)
Je ne sais pas comment rectifier ça, tu as une idée ?
classeur1.jpg
 

Pièces jointes

  • Classeur1.xlsm
    400.9 KB · Affichages: 3

Phil69970

XLDnaute Barbatruc
Bonjour @Claudinedu13

Quelques remarques
1) Pourquoi tu décales de 8 lignes le devis par rapport à mon fichier ?

Ton fichier
1706521660230.png


Mon fichier
1706521739598.png


2) Pourquoi vouloir à tout prix mettre des lignes pour délimiter ce que les bordures excel fait très bien

3) Pourquoi vouloir sauter une ligne entre chaque description cela limite ton devis de moitié

4) Quand on fournit un fichier il doit être représentatif

C'est quoi représentatif ?
- représentatif, même organisation des lignes et des colonnes, mêmes libellés, même nom des TS et même nom d'en-tête , mêmes noms de feuilles...
- anonymisé, pas de données personnelles réelles tels nom, n° sécu, adresse ... remplacé par Nom1, Nom2 etc ....
- simplifié, une quinzaine de lignes reproduisant l'ensemble des différents cas envisageables (Avec le résultat souhaité éventuellement)

Si cela fonctionne sur le fichier fourni et pas sur le vrai fichier c'est qu'il n'est en rien représentatif ou que tu n'as pas su transposer ce qui devrait être un simple copier coller du code.

TS = Tableaux Structuré

Et visiblement tu as 1 TS dans la feuille Liste_Devis


Quand il y a un ou des TS on écrit le code pour un ou des TS et c'est pour cela qu'il faut un fichier représentatif c'est pas pour le fun mais bien pour écrire le bon code !!! ;)

Donc fournis un fichier représentatif ...... cela évite de recommencer à chaque fois le fichier et de perdre son temps !!! ;)

j'ai l'impression que tu aimes bien te compliquer la vie
Pourquoi faire simple quand on peut faire compliquer 🤣 🤣
 

Claudinedu13

XLDnaute Nouveau
Bonjour @Claudinedu13

Quelques remarques
1) Pourquoi tu décales de 8 lignes le devis par rapport à mon fichier ?

Ton fichier
Regarde la pièce jointe 1189530

Mon fichier
Regarde la pièce jointe 1189531

2) Pourquoi vouloir à tout prix mettre des lignes pour délimiter ce que les bordures excel fait très bien

3) Pourquoi vouloir sauter une ligne entre chaque description cela limite ton devis de moitié

4) Quand on fournit un fichier il doit être représentatif

C'est quoi représentatif ?
- représentatif, même organisation des lignes et des colonnes, mêmes libellés, même nom des TS et même nom d'en-tête , mêmes noms de feuilles...
- anonymisé, pas de données personnelles réelles tels nom, n° sécu, adresse ... remplacé par Nom1, Nom2 etc ....
- simplifié, une quinzaine de lignes reproduisant l'ensemble des différents cas envisageables (Avec le résultat souhaité éventuellement)

Si cela fonctionne sur le fichier fourni et pas sur le vrai fichier c'est qu'il n'est en rien représentatif ou que tu n'as pas su transposer ce qui devrait être un simple copier coller du code.

TS = Tableaux Structuré

Et visiblement tu as 1 TS dans la feuille Liste_Devis


Quand il y a un ou des TS on écrit le code pour un ou des TS et c'est pour cela qu'il faut un fichier représentatif c'est pas pour le fun mais bien pour écrire le bon code !!! ;)

Donc fournis un fichier représentatif ...... cela évite de recommencer à chaque fois le fichier et de perdre son temps !!! ;)

j'ai l'impression que tu aimes bien te compliquer la vie
Pourquoi faire simple quand on peut faire compliquer 🤣 🤣
Re,

Tout d'abord merci pour le temps que tu me consacres.

1/ Par rapport au classeur précédent, celui ci est bien un fichier représentatif mais j'ai enlevé simplement les données "sensibles" , de la ligne 1 à 9 normalement il y a les renseignements société de mon fils (logo etc).

2/ Pour les bordures je n'ai pas bien compris?

3/ Avec les sauts de lignes je trouve que le devis est plus clair.

Le fichier est compromis ou ça fonctionne ?

Oui apparement j'aime les complications 🤣
 

Phil69970

XLDnaute Barbatruc
@Claudinedu13

2/ Pour les bordures je n'ai pas bien compris?
je parle de ses lignes que j’enlève à chaque fois et que tu remets à chaque fois !!!

1706526947521.png


Le fichier est compromis ou ça fonctionne ?
4) Quand on fournit un fichier il doit être représentatif

TS = Tableaux Structuré

Et visiblement tu as 1 TS dans la feuille Liste_Devis
Si comme tu as un ou des TS comme je vois sur l'image le fichier fonctionnera pas ou mal

Donc fournis un fichier représentatif ...... cela évite de recommencer à chaque fois le fichier et de perdre son temps !!! ;)

Oui apparement j'aime les complications 🤣
Je confirme
 

Claudinedu13

XLDnaute Nouveau
@Claudinedu13


je parle de ses lignes que j’enlève à chaque fois et que tu remets à chaque fois !!!

Regarde la pièce jointe 1189532



Si comme tu as un ou des TS comme je vois sur l'image le fichier fonctionnera pas ou mal




Je confirme
Les lignes c'est mon fils (plus compliqué que moi) qui a crée son devis comme ça à la base, il y tient à ses lignes 🤣
Pour le TS, j'avais mis mon fichier liste devis sous forme de tableau, puis je l'avais converti en plage normal, d'où l'apparence de "tableau".
J'apprends sur le tas c'est pour ça que je fais beaucoup de bêtises :rolleyes:
 

Phil69970

XLDnaute Barbatruc
@Claudinedu13

1)
il y tient à ses lignes
Tu devrais lui apprendre à s'en passer car complètement inutile et identique aux bordures excel sans les tracas car il fut tout réaligner si déplacement de colonnes

2)
je l'avais converti en plage normal, d'où l'apparence de "tableau".
Donc tu n'as pas de tableau

3)
3/ Avec les sauts de lignes je trouve que le devis est plus clair.
Cela ne sert à rien sauf à diminuer le nombre de lignes du devis par 2 et se prendre éventuellement la tête.

4) Si j'ai bien compris les 9 ères lignes servent aux logos et coordonnées diverses de la Sté etc....

Merci de me confirmer ces points .....
 

Claudinedu13

XLDnaute Nouveau
@Claudinedu13

1)

Tu devrais lui apprendre à s'en passer car complètement inutile et identique aux bordures excel sans les tracas car il fut tout réaligner si déplacement de colonnes

2)

Donc tu n'as pas de tableau

3)

Cela ne sert à rien sauf à diminuer le nombre de lignes du devis par 2 et se prendre éventuellement la tête.

4) Si j'ai bien compris les 9 ères lignes servent aux logos et coordonnées diverses de la Sté etc....

Merci de me confirmer ces points .....

1/ je vais lui expliquer , mais tête dur le petit de 31 ans

2/ ça ressemble à un tableau mais ce n'est pas un TS

3/ indécise sur ce point

4/ Oui c'est bien ça, et vu la grandeur du logo que veut le fiston je ne peux pas réduire.

Merci
 

Phil69970

XLDnaute Barbatruc
1) je peux par macro supprimer ces cochonneries inutiles !!!
2) c'est donc comme le canada dry 🤣
3) Je décide à ta place
4) le logo peux toujours être rapetissé mais je lui laisse les 9 ères lignes 🤣

Remarque ==> 9 lignes de logo + 1 ligne sur 2 vide cela ne laisse pas beaucoup de place au boulot !!! o_O
C'est plutôt une page de pub plutôt qu'un devis ......🤔

Es tu d'accord ?
 

Claudinedu13

XLDnaute Nouveau
1) je peux par macro supprimer ces cochonneries inutiles !!!
2) c'est donc comme le canada dry 🤣
3) Je décide à ta place
4) le logo peux toujours être rapetissé mais je lui laisse les 9 ères lignes 🤣

Remarque ==> 9 lignes de logo + 1 ligne sur 2 vide cela ne laisse pas beaucoup de place au boulot !!! o_O
C'est plutôt une page de pub plutôt qu'un devis ......🤔

Es tu d'accord ?
oui d'accord avec toi 🤣
 

Discussions similaires

Réponses
1
Affichages
167
Réponses
0
Affichages
151
Réponses
11
Affichages
290

Statistiques des forums

Discussions
312 207
Messages
2 086 252
Membres
103 166
dernier inscrit
ZAHRAA