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:

Si...

XLDnaute Barbatruc
salut

Voici une autre proposition (en gardant l’idée) : on ne déplace que la ligne sélectionnée (donc, surtout pas, celles des titres comme cela pouvait se produire auparavant). Le déplacement ne se fera que cas par cas (d'ailleurs dans la proposition précédente, il aurait été plus intéressant de mettre la propriété du formulaire "ShowModal" à "False" pour se déplacer à loisir).

Ayant eu des problèmes avec le dernier fichier joint, j’ai modifié certaines choses (entre autre, une seule colonne pour le calcul de la TVA) et effacé les noms inutiles ici.

Il n’est pas commode de travailler sur des fichiers tronqués, avec des cellules cachées …

Il y aura sans doute une adaptation à faire avec ton projet original.
 

Pièces jointes

  • Déplacement ligne.xlsm
    31 KB · Affichages: 49

grisan29

XLDnaute Accro
bonjour si...
très bien ton fichier qui fonctionne correctement sur l'exemple et une fois transposé la ligne se remonte bien mais le textbox ne s'affiche pas pour choisir ou poser la ligne donc d'office elle se met en 1ére et efface les bordures du haut
j'avais laisser les noms en pensant que c'était eux qui genait mais repris sur le classeur c'est bon sauf pour la bordure en haut
je sais que par avance la 1èer ligne est toujours en gras et démarre en col C sous les titres
 

Pièces jointes

  • test de si....jpg
    test de si....jpg
    149.4 KB · Affichages: 66
Dernière édition:

grisan29

XLDnaute Accro
bonjour Si...
j'ai un modifier le code mais la il mets des bordures partout
Code:
Private Sub CommandButton1_Click()
    Rows(ActiveCell.Row).Cut
    Rows(Cb_ligne.Text + 1).Insert Shift:=xlDown
    Range("D" & Cb_ligne + 1).Select
    Range("C18:M" & Dl, "O18:P" & Dl).Borders.LineStyle = xlContinuous 'xlNone '<===========ici
    For N = 7 To 10
      Range("C18:M" & Dl).Borders(N).Weight = xlMedium
      Range("O18:P" & Dl).Borders(N).Weight = xlMedium
    Next
    Unload Me
End Sub
et changer aussi O18:O et O18: P
et le for7 to 10 correspond a quoi

pas bien regarder mais autres colonnes n'ont plus d'encadrement
 

Si...

XLDnaute Barbatruc
Re
et le for 7 to 10 correspond a quoi
on bloucle sur les indices attribués aux 4 bordures extérieures. Ici, on efface les bordures (intérieures et extérieures) et on ne remet que les extérieures. Bien sûr, il ne faut pas toucher aux cellules de droite non concernées

C’est ton formulaire qui m’a trompé. Si tu veux déplacer une ligne n’importe où dans la plage, vois si cela te convient* (sinon, attends que quelqu'un(e) d'autre te propose autre chose;)).
J'ai corrigé les 30% que tu me réclames.
 

Pièces jointes

  • Déplacement ligne2.xlsm
    28.8 KB · Affichages: 56

Si...

XLDnaute Barbatruc
re

si tu t''arrêtes au premier doubleclic (choix de la ligne, alerte rouge ) tu n'iras pas bien loin (choix de l'endroit, alerte verte).
Maintenant, si tu ne sais pas intégrer correctement cela à ton programme, je ne peux plus rien proposer.
 

Si...

XLDnaute Barbatruc
re

et en décomposant ainsi
...
Cells(Ld, 3) = ""
Rows(Ld).Cut
Rows(R.Row).Insert Shift:=xlDown
Range("C18:C" & Dl).Borders.LineStyle = xlNone

Range("O18:O" & Dl).Borders.LineStyle = xlNone

Range("C18:C" & Dl).Interior.ColorIndex = xlNone
c'est mieux ?

Tu sais quand même que les cellules fusionnées peuvent poser problème, non ?
 

grisan29

XLDnaute Accro
bonjour SI.....
merci de ta réponse, bien sur que je sais que le fusionnage pose des problème mais la je joue sut 2 tableau
refaire un classeur complet sans fusion et sans besoin 'ocx défaillant a plusieurs machines ou au remise a plat
et l'autre que j'améliore doucement car il me sert pas tous les jours mais souvent
comme tu as mis ton code j'avais essayer déja ou j'ai la bordure qui remonte et dans ton exemple elle remonte et efface celle droite
 

grisan29

XLDnaute Accro
bonsoir SI....
merci beaucoup j'ai réussi a adapter ta solution de double clic et tous les traits verticaux aussi
voici comment j'ai fait
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal R As Range, Cancel As Boolean)
  If Intersect(R, Columns(4)) Is Nothing Then Exit Sub
  Cancel = 1
  If Not R.Font.Bold Then
  Dl = [D1000].End(xlUp).Row
  Set C = R(1, 0)
  Select Case R(1, 0).Interior.ColorIndex
  Case 3
  If C = "©" Then C = "": C.Interior.ColorIndex = xlNone
  Case 4
  If C = "©" Then C = "": C.Interior.ColorIndex = xlNone
  Case xlNone
  If Application.CountIf(Columns(3), "©") = 0 Then
  C.Interior.ColorIndex = 3: C = "©": Ld = R.Row
  Else
  C.Interior.ColorIndex = 4
  If MsgBox("confirmer le déplacement :", vbYesNo, "déplacer là ?") = 7 Then
  C.Interior.ColorIndex = xlNone: Exit Sub
  Else
  Cells(Ld, 3) = ""
  Rows(Ld).Cut
  Rows(R.Row).Insert Shift:=xlDown
  Range("C19:M" & Dl, "O19:O" & Dl).Borders.LineStyle = xlNone
  Range("C18:C" & Dl).Interior.ColorIndex = xlNone
  With Range("I18:I" & Dl).Borders(xlEdgeLeft)
  .LineStyle = xlContinuous
  .Weight = xlMedium
  End With
  With Range("J18:J" & Dl).Borders(xlEdgeLeft)
  .LineStyle = xlContinuous
  .Weight = xlMedium
  End With
  With Range("K18:K" & Dl).Borders(xlEdgeLeft)
  .LineStyle = xlContinuous
  .Weight = xlMedium
  End With
   
  With Range("L18:L" & Dl).Borders(xlEdgeLeft)
  .LineStyle = xlContinuous
  .Weight = xlMedium
  End With
   
  With Range("M18:M" & Dl).Borders(xlEdgeLeft)
  .LineStyle = xlContinuous
  .Weight = xlMedium
  End With
   
  With Range("P18:P" & Dl).Borders(xlEdgeLeft)
  .LineStyle = xlContinuous
  .Weight = xlMedium
  End With
  For n = 7 To 10
  Range("C18:M" & Dl).Borders(n).Weight = xlMedium
  Range("O18:O" & Dl).Borders(n).Weight = xlMedium
  Next

  End If
  End If
  End Select
  End If
End Sub

ce n'est pas aussi bien que ton code mais ca fonctionne
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 153
Membres
103 136
dernier inscrit
Zoulander