XL 2013 (merci a si...)(RESOLU)remonter ligne basse sans la bordure basse

grisan29

XLDnaute Accro
bonjour a tous
je suis cours de modification complète de mon classeur et la je bute surement a cause des cellules nommées qui sont dessous,
dans l'exemple que je vais vous présenter, j'ai un userform qui me sert a déplacer une ligne dans le devis
en choisissant dans la combobox dans quelle partie je veux la déplacée
une fois la partie choisie il le n° de la 1 ere ligne de cette partie qui s'affiche dans le textbox de droite ou je peux changer le n° si je veux pas que ma ligne se déplace dans celle afficher au départ
cet userform fonctionne très bien tant que la ligne a déplacer ne se trouve pas en bas du tableau, car dans ce cas le déplacement de la ligne amène aussi les bordures
et c'est la que je fait appel a vos lumières, car il ne faut pas que les bordures basses se déplace avec la ligne ou les lignes
en fait ce que j’essaie de faire c'est de recréer la bordure si elle a été effacer

comme ce que j'ai dit doit etre un peu flou, je vais joindre un classeur exemple
 

Pièces jointes

  • test bordure pour remonte ligne.xlsm
    49.8 KB · Affichages: 79
Dernière édition:

grisan29

XLDnaute Accro
Bonsoir Marcel32
en fait ce que tu m'as dit de faire une fois que j'ai fini mon tableau c'est de faire les bordures avec l'enregistreur si j'ai bien compris
- sélectionne toutes les lignes de données de ton tableau (la page sélectionnée va donc de la première colonne de la première ligne jusqu'à la dernière colonne de la dernière ligne de ton tableau),
- va dans le format des cellules et mets le même type de bordure horizontale pour la bordure du haut, la bordure centrale et la bordure du bas,
- valide ce changement,
- sélectionne les cellules d'en-têtes de ton tableau (la plage sélectionnée doit donc être la ligne située juste avant les données du tableau),
- va dans le format des cellules et mets une bordure épaisse en-bas,
- valide ce changement,
- sélectionne les cellules situées juste après la dernière ligne de ton tableau,
- va dans le format des cellules et mets une bordure épaisse en-haut,
- valide ce changement.

et un peu plus bas tu as dit
Je viens de tester ton fichier après l'avoir modifié comme je l'ai expliqué et ça marche chez moi.
Et chez toi ?
et chez moi je ne l'ai pas réussi car je peux m'apercevoir en cours que j'ai oublier une ligne et plutôt que de tout refaire , j'ajoute la ligne manquante qui se met en bas du tableau et c'est la que commence le souci
en fait mon tableau s'agrandit au fur et a mesure d'ajout de lignes
mais si tu as fait un test chez toi mets le ligne pour voir
merci a toi
 

TooFatBoy

XLDnaute Barbatruc
En effet, j'avais fait le test sur le fichier de l'autre fil de discussion et ça fonctionnait bien sans modifier quoi que ce soit à ta macro de ton fichier de l'époque, simplement en créant les bordures comme je tentais de l'expliquer. ;)


Non, je n'ai pas du tout parlé de l'enregistreur.
A ce moment-là on avait peu d'informations et pas de fichier. J'avais décris une méthode complète de création des bordures de ton tableau.

Mais ce qui compte le plus dans cette méthode c'est que les bordures horizontales de chacune des lignes soient identiques, de la première à la dernière ligne incluses (dans ton cas ça veut dire aucune bordure horizontale en-haut et aucune bordure horizontale en-bas).
En suite, pour avoir visuellement un trait en haut des données du tableau, il faut mettre une bordure horizontale en-bas de la ligne située juste au-dessus du tableau (dans ton cas c'est la ligne des en-têtes du tableau).
Enfin, pour avoir visuellement un trait en bas du tableau, il faut mettre une bordure horizontale en-haut de la ligne située juste en-dessous du tableau (dans ton cas c'est la ligne de total).


Je joins un fichier dans lequel j'ai modifié la macro comme proposé plus haut.
J'ai aussi un peu modifié l'allure du tableau, en particulier avec des lignes horizontales pour mieux séparer les différents articles de la liste, mais tu pourras bien sûr modifier à ta convenance et supprimer ces lignes si besoin. ;-)
 

Pièces jointes

  • Remontee-ligne.xlsm
    36.1 KB · Affichages: 60
Dernière édition:

grisan29

XLDnaute Accro
bonsoir Marcel62
c'est tout fait cela que je voulais faire, mais je regardais plus demain car je vais essayer d'adapter aux colonnes de tva
bon j'ai essayer en transférant le code entier et ca ne fonctionne pas qu'as tu modifier dans la feuille
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Ah oui, pardon, j'ai oublié de préciser que je n'avais pas utilisé la méthode en question sur le deuxième tableau (celui des TVA 10 et 20 %) pour que tu vois bien qu'avec la même macro on obtient un résultat différent selon comment a été construit le tableau et que tu vois ainsi l'intérêt de ladite méthode de construction des lignes horizontales du tableau. ;)
 

TooFatBoy

XLDnaute Barbatruc
Ben oui, c'est juste ça : clic-droit, format de cellule et modification des bordures du tableau.
Une fois que ton tableau de base est construit correctement, tout se déroule comme prévu avec un simple couper/coller (trois lignes dans la macro). ;)

Quand je parle de "méthode", c'est celle que j'ai donnée dans l'autre fil de discussion, que j'ai ré-expliquée ci-dessus et que je remets ci-dessous :
Mais ce qui compte le plus dans cette méthode c'est que les bordures horizontales de chacune des lignes soient identiques, de la première à la dernière ligne incluses (dans ton cas ça veut dire aucune bordure horizontale en-haut et aucune bordure horizontale en-bas).

En suite, pour avoir visuellement un trait en haut des données du tableau, il faut mettre une bordure horizontale en-bas de la ligne située juste au-dessus du tableau (dans ton cas c'est la ligne des en-têtes du tableau).

Enfin, pour avoir visuellement un trait en bas du tableau, il faut mettre une bordure horizontale en-haut de la ligne située juste en-dessous du tableau (dans ton cas c'est la ligne de total).
 

TooFatBoy

XLDnaute Barbatruc
Je crois que tu n'as pas compris le principe de ce que j'essaye d'expliquer. :(

Par "méthode" je veux dire "les explications que j'ai données pour construire le tableau".
J'ai l'impression que tu crois que cette "méthode" est à refaire à chaque fois que tu insères une ligne. Or il n'en est rien. Cette "méthode" est simplement une façon de construire ton tableau pour ne plus avoir à t'occuper des bordures horizontales. C'est pour te simplifier la vie ou plus exactement pour simplifier tes macros d'insertion et de déplacement de lignes.
 

TooFatBoy

XLDnaute Barbatruc
Nos messages se sont croisés (tu as répondu pendant que j'écrivais le mien). ;)

Mais je vois que ta réponse confirme l'impression que j'avais : non, il ne faut pas refaire la manip à chaque fois que tu veux déplacer une ligne.
La preuve avec le fichier que je t'ai donné plus haut : tu ne fais aucune manip et pourtant ça marche à tous les coups (pas uniquement pour le premier déplacement de ligne).
 

TooFatBoy

XLDnaute Barbatruc
Je t'ai créé un fichier Excel pour essayer de t'expliquer le principe de la construction correcte du tableau.

Ce classeur Excel comporte deux feuilles : l'une explique comment construire de façon "naturelle" le tableau (mais ce n'est pas bon) et l'autre explique comment construire correctement le tableau. Il est important de bien commencer par comprendre la mauvaise construction avant de regarder la bonne construction.
Chaque feuille doit être vue comme comportant deux colonnes. La colonne de gauche représente une feuille Excel telle qu'on peut la voir s'afficher à l'écran. La colonne de droite représente la même feuille Excel telle qu'elle est (à mon avis) vue par Excel. Ce que j'ai voulu représenter là c'est que dans la mémoire d'Excel chaque cellule a ses quatre bordures qui lui sont propres.

Commence par afficher l'onglet "Pas bon".
  • Au début on a une feuille Excel vierge.
  • A l'étape n° 1 on crée la première ligne de notre futur tableau. (j'ai mis en fond vert les cellules sur lesquelles on agit à cette étape)
    On se rend déjà compte dans la colonne de droite, que le bas de la cellule B2 est modifié, mais le haut de la cellule B3 n'est pas modifié.
  • A l'étape n° 2 on va copier la première ligne du tableau et la coller sur les six lignes suivantes.
  • Comme on veut un tableau un peu joli on va lui mettre un tour plus épais (et rouge) et on va faire de même pour la ligne d'en-têtes du tableau. Donc à l'étape n° 3 on sélectionne la ligne d'en-têtes et on lui met un cadre épais (et rouge) autour.
  • A l'étapde n° 4 on sélectionne toutes les cellules de données du tableau et on met un cadre épais (et rouge) autour.
  • A la fin on a bien notre tableau comme on voulait, mais on peut déjà voir, en regardant l'étape "FIN" dans la colonne de droite, que si on déplace la ligne n° 8, on déplace en même temps le bord épais (et rouge). Et c'est bien là ton problème.
Passons maintenant à l'onglet "Bon".
  • Au début on a une feuille Excel vierge.
  • Aux étapes n° 1, 2 et 3 on procède exactement comme précédemment pour créer le tableau.
  • A l'étape n° 4 on sélectionne toutes les cellules de données du tableau, mais au lieu de mettre un cadre épais (et rouge) autour de cette plage de cellules, on va simplement mettre un bord épais (et rouge) à gauche et à droite de cette plage de cellules.
  • On ajoute une étape n° 5 dans laquelle on sélectionne les cellules situées juste en-dessous du tableau et on leur donne un bord supérieur épais (et rouge).
  • Au final on a bien notre tableau comme on voulait et visuellement il est identique au précédent. Mais on peut voir que dans la mémoire d'Excel ce n'est pas tout à fait pareil... en effet, maintenant si on déplace la ligne n° 8 on ne déplace plus en même temps le bord épais (et rouge) puisque celui-ci appartient en fait à la ligne n° 9. Et c'est bien ce que tu voulais. ;)
J'ajouterai en conclusion que chaque bordure est en fait constituée des deux bordures des cellules adjacentes mais que c'est la dernière bordure créée qui s'affiche à l'écran par-dessus l'autre.

J'espère que ça répond à tes interrogations.
 

Pièces jointes

  • ConstructionTableau.xlsx
    38.9 KB · Affichages: 43
Dernière édition:

grisan29

XLDnaute Accro
bonjour Marcel32
merci pour tes explications, mais je crois avoir trouvé pourquoi je n'y arrive pas en voyant l'exemple que tu as donné
en fait tu appelles cela une MFC mais le c'est le grande inconnue, jamais tenté de les utilisé, c'est exactement comme les formules
plus elles sont basique et plus elle me sont compréhensible, dès le dbut je me suis axé VBA
l'enregistreur avec ça il a du bon, il transforme les formules en vba, avec des ajouts j'en concois
 

grisan29

XLDnaute Accro
Bonjour Marcel32
merci pour ta réponse, je crois que vais revoir en clair ton explication mais quand je refais un nouveau devis , la rémise a zero supprime tout le tableau jusque la ligne 19 ne laisse aucune ligne qous les titres que tu as mis en couleur
c'est bien de cela que tu parles et dont je n'ai pas souvenir de l'avoir ouvert sur cet onglet
je n'ai pas l'onglet format des cellules comme developpeur et les autre
 

Pièces jointes

  • format cellule.jpg
    format cellule.jpg
    109.4 KB · Affichages: 67
Dernière édition:

grisan29

XLDnaute Accro
bonjour Marcel32
je crois avoir compris le format des cellules tel que tu l'as bien expliqué:) mais je ne sais pas pour encore mais je vais me trouver avec un souci
car mon code d'ajout d'articles lui mets le format des cellules bien jusque présent, donc il vas falloir le mettre de coté si je saisi bien ce que tu veux m'expliquer
Code:
  'Formatage du tableau


    .Cells(lig, "C").Borders(xlEdgeLeft).LineStyle = xlContinuous
    .Range(.Cells(lig, "I"), .Cells(lig, "P")).Borders(xlEdgeLeft).LineStyle = xlContinuous
    .Range(.Cells(lig, "C"), .Cells(lig, "M")).Borders(xlEdgeTop).LineStyle = xlNone
    .Range(.Cells(lig, "O"), .Cells(lig, "P")).Borders(xlEdgeTop).LineStyle = xlNone
    .Range(.Cells(lig, "C"), .Cells(lig, "M")).Borders(xlEdgeBottom).LineStyle = xlContinuous
    .Range(.Cells(lig, "O"), .Cells(lig, "P")).Borders(xlEdgeBottom).LineStyle = xlContinuous
    .Range(.Cells(lig, "D"), .Cells(lig, "H")).Borders(xlInsideVertical).LineStyle = xlNone
    .Range(.Cells(lig, "I"), .Cells(lig, "Q")).Borders(xlInsideVertical).LineStyle = xlContinuous
    .Range(.Cells(lig, "O"), .Cells(lig, "P")).VerticalAlignment = xlCenter

    .Range(.Cells(lig, "I"), .Cells(lig, "M")).VerticalAlignment = xlCenter

    With .Range("C19:M" & lig & ",O19:P" & lig)
      .Font.Size = 14
      .Font.Name = "arial"
    End With
  End With
  wsFacture.Range("c19:M19").Borders(xlEdgeTop).LineStyle = xlContinuous
  wsFacture.Range("O19:P19").Borders(xlEdgeTop).LineStyle = xlContinuous
 

grisan29

XLDnaute Accro
bonsoir Marcel32
j'ai essayer d'adapter le format a mon classeur en ayant mis en coche les codes de bordures et ben c'est sur ca fonction mais encadrant toutes les lignes
mais ce doit etre parce que le début d'inscription se fait en haut tout juste au ras des entêtes de tableau
 

Pièces jointes

  • test bordure à format.jpg
    test bordure à format.jpg
    135.9 KB · Affichages: 61
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 189
Messages
2 086 031
Membres
103 101
dernier inscrit
CyberAlex93