Transferer lignes VBA

gabriel

XLDnaute Nouveau
Bonsoir à toutes et tous,

J'aurais besoins d'une astuces pour finaliser mon programme :

Déplacer une ligne complète de données d'une feuil1 à une feuil2, que le déplacement ne génère pas de blancs et que le transfert sur la feuil2 soit fait tjrs en fin de tableau.... et tout ça à partir d'une checkbox qui se trouve sur un USF de recherche (si la fiche trouvé est validée via la checkbox, elle se transfert sur la feuil2)
Ca fait 3h00 que je suis dessus, pas de solution.

Quelqu'un aurait une idée ?
Merci de votre aide
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Gabriel, bonsoir le forum,

Je te propose le code suivant que tu devras adapter car tu n'es guère bavard sur comment obtenir le numéro de la ligne à copier... J'ai utilisé ActiveCell dans cet exemple :


Dim dest As Range 'déclare la variable dest

Set dest = Sheets('Feuil2').Range('A65536').End(xlUp).Offset(1, 0) 'définit la variable dest
ActiveCell.EntireRow.Cut Destination:=dest 'copie la ligne vers la variable dest
ActiveCell.EntireRow.Delete shift:=xlUp 'supprime la ligne
 
C

christian

Guest
bonjour,

J'utilise ta réponse robert, mais quel code pourais-je y ajouter pour que les information demeurent dans les plages de départ. Car présentement toute les info sont tranféré.


bonne journée!
 

gabriel

XLDnaute Nouveau
Bonjour Robert,
A la base je suis sur un USF de recherche
Tous commence à la validation des modifications.
Je souhaiterais déplacer la ligne quand la valeur de la CheckBox2= True
Je me déplace dans la base de donnée avec une listebox Multicolonne, ....
Voila le code dans lequel je souhaiterais integrer le déplacement.
Ma ligne passe de la Feuille 'Base' à la feuille 'AFacturer'.

Merci de t'interresser à mon problème.
-------------------------------------------------
Option Explicit
Dim NomLBindex As Integer
-------------------------------------------------

Private Sub ValidationModifs_Click()

With Sheets('Base')
.Range('A' & NomLBindex).Value = TextBox9.Value
.Range('B' & NomLBindex).Value = TextBox21.Value
.Range('C' & NomLBindex).Value = TextBox10.Value
.Range('D' & NomLBindex).Value = TextBox20.Value
.Range('E' & NomLBindex).Value = TextBox1.Value
.Range('F' & NomLBindex).Value = TextBox2.Value
.Range('G' & NomLBindex).Value = TextBox3.Value
.Range('H' & NomLBindex).Value = TextBox5.Value
.Range('I' & NomLBindex).Value = TextBox7.Value
.Range('J' & NomLBindex).Value = TextBox8.Value
.Range('L' & NomLBindex).Value = TextBox11.Value
.Range('M' & NomLBindex).Value = TextBox12.Value
.Range('N' & NomLBindex).Value = TextBox12.Value
.Range('O' & NomLBindex).Value = TextBox14.Value
.Range('P' & NomLBindex).Value = TextBox15.Value
.Range('Q' & NomLBindex).Value = TextBox19.Value
.Range('R' & NomLBindex).Value = TextBox17.Value
.Range('S' & NomLBindex).Value = TextBox18.Value
.Range('T' & NomLBindex).Value = CheckBox2.Value


End With
Unload Me
UserForm1.Show


End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Gabriel, Christian, bonjour le forum,

Christian

Supprime cette ligne de code :

ActiveCell.EntireRow.Delete shift:=xlUp 'supprime la ligne

Gabriel

Si j'ai bien compris, je te propose :

Option Explicit
Dim NomLBindex As Integer

Private Sub ValidationModifs_Click()
Dim li As Integer
If checkbox2.Value = True Then
With Sheets('AFacturer')
li = .Range('A65536').End(xlUp).Row + 1
.Range('A' & li).Value = TextBox9.Value
.Range('B' & li).Value = TextBox21.Value
.Range('C' & li).Value = TextBox10.Value
.Range('D' & li).Value = TextBox20.Value
.Range('E' & li).Value = TextBox1.Value
.Range('F' & li).Value = TextBox2.Value
.Range('G' & li).Value = TextBox3.Value
.Range('H' & li).Value = TextBox5.Value
.Range('I' & li).Value = TextBox7.Value
.Range('J' & li).Value = TextBox8.Value
.Range('L' & li).Value = TextBox11.Value
.Range('M' & li).Value = TextBox12.Value
.Range('N' & li).Value = TextBox12.Value
.Range('O' & li).Value = TextBox14.Value
.Range('P' & li).Value = TextBox15.Value
.Range('Q' & li).Value = TextBox19.Value
.Range('R' & li).Value = TextBox17.Value
.Range('S' & li).Value = TextBox18.Value
.Range('T' & li).Value = checkbox2.Value
End With
Else
With Sheets('Base')
.Range('A' & NomLBindex).Value = TextBox9.Value
.Range('B' & NomLBindex).Value = TextBox21.Value
.Range('C' & NomLBindex).Value = TextBox10.Value
.Range('D' & NomLBindex).Value = TextBox20.Value
.Range('E' & NomLBindex).Value = TextBox1.Value
.Range('F' & NomLBindex).Value = TextBox2.Value
.Range('G' & NomLBindex).Value = TextBox3.Value
.Range('H' & NomLBindex).Value = TextBox5.Value
.Range('I' & NomLBindex).Value = TextBox7.Value
.Range('J' & NomLBindex).Value = TextBox8.Value
.Range('L' & NomLBindex).Value = TextBox11.Value
.Range('M' & NomLBindex).Value = TextBox12.Value
.Range('N' & NomLBindex).Value = TextBox12.Value
.Range('O' & NomLBindex).Value = TextBox14.Value
.Range('P' & NomLBindex).Value = TextBox15.Value
.Range('Q' & NomLBindex).Value = TextBox19.Value
.Range('R' & NomLBindex).Value = TextBox17.Value
.Range('S' & NomLBindex).Value = TextBox18.Value
.Range('T' & NomLBindex).Value = checkbox2.Value
End With

Unload Me
UserForm1.Show
End Sub

Message édité par: Robert, à: 02/03/2006 12:01
 

gabriel

XLDnaute Nouveau
Bonjour & Merci
Au lancement de la validation j'ai ce message qui apparaît :
Référence incorrect ou non qualifiée
Il me surligne
'.Range('A' & li).Value = TextBox9.Value'

Erreur d'execution '1004'
Erreur définie par 'application ou par l'objet

sais tu d'ou ca peut venir ?

Merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Gabriel, Christian, bonjour le forum,

Je pense qu'il n'a pas définit la variable li et cela provoque une erreur. Rajoute juste en dessous de With Sheets('AFacturer') et aussi en dessous de With Sheets('Base') la ligne :

Mais l'idéal, pour ne pas perdre notre temps, serait que tu envoies ton fichier. Si celui-ci est trop lourd même zippé, pars d'un fichier vierge, renomme le onglets comme le fichier original, fait un copier/coller de quelques données essentielles à l'exemple et copie l'userform (par VBE fait glisser l'userform sur le fichier exemple). Nous pourrons déceler le bug plus facilement.
 

gabriel

XLDnaute Nouveau
Re bonjour a tous et a toutes
Robert
Apparamment ca fonctionne...
je t'envois quand meme l'USF, je pense que tu trouveras quelques abberrationsssss.
Dans tous les cas merci beaucoup de ton aide, le code fonctionne et en plus j'ai appris pas mal de choses...
@+
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Gabriel, bonjour le forum,

Autre solution plus simple :


Option Explicit
Dim NomLBindex As Integer

Private Sub ValidationModifs_Click()
Dim li As Integer

If CheckBox2.Value = True Then
With Sheets('AFacturer')
.Select
li = .Range('A65536').End(xlUp).Row + 1
End With
Else
With Sheets('Base')
.Select
li=NomLBindex
End With
End If
Range('A' & li).Value = TextBox9.Value
Range('B' & li).Value = TextBox21.Value
Range('C' & li).Value = TextBox10.Value
Range('D' & li).Value = TextBox20.Value
Range('E' & li).Value = TextBox1.Value
Range('F' & li).Value = TextBox2.Value
Range('G' & li).Value = TextBox3.Value
Range('H' & li).Value = TextBox5.Value
Range('I' & li).Value = TextBox7.Value
Range('J' & li).Value = TextBox8.Value
Range('L' & li).Value = TextBox11.Value
Range('M' & li).Value = TextBox12.Value
Range('N' & li).Value = TextBox12.Value
Range('O' & li).Value = TextBox14.Value
Range('P' & li).Value = TextBox15.Value
Range('Q' & li).Value = TextBox19.Value
Range('R' & li).Value = TextBox17.Value
Range('S' & li).Value = TextBox18.Value
Range('T' & li).Value = checkbox2.Value

Unload Me
UserForm1.Show
End Sub

Comment n'y ai-je pensé plus tôt...
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonjour Gabriel le chercheur, Robert le troubadour, Christian le furtif :)

Juste pour le fun, un code qui fait la même chose que celui de Robert mais en moins lisible et un peu moins rapide ;) :

Option Explicit

Const NbTextBox = ' 9211020 1 2 3 5 7 81112121415191718'

Dim NomLBindex As Integer

Private Sub ValidationModifs_Click()
'
Dim li As Long
Dim i As Byte
'
  Sheets(IIf(checkbox2, 'AFacturer', 'Base')).Select
  li = IIf(checkbox2, Range('A65536').End(xlUp).Row + 1, NomLBindex)

  For i = 0 To 17
    Cells(li, i\\\\\\\\10 + i + 1) = Me.Controls('TextBox' & _
        Trim(Mid(NbTextBox, i * 2 + 1, 2)))
  Next i

  Unload Me
  UserForm1.Show
End Sub

ou comment rendre un code incompréhensible au bout de quelques semaines :)

EDITION : Correction indice ligne et mise en forme.
A+

Message édité par: Charly2, à: 02/03/2006 18:16

Message édité par: Charly2, à: 02/03/2006 18:19
 

gabriel

XLDnaute Nouveau
Bonsoir à tous les virtuoses du VBA, particulièrement Robert qui m'a bien dépanné.
Charly2, je suis en train d'apprendre...
des codes comme ça à chaud, ça fait peur ! il faut me laisser le temps de digerer le basic avant de faire compliqué... mais c'est sympa quand même.

Derniere petit question... de la journée

Pourquoi cette ligne ne passe pas ?
LabelFax = format(LabelFax, '00'' ''00'' ''00'' ''00'' ''00')
je ne vois pas l'erreur, elle fonctionnait et maintenant il y a erreur :

['Erreur de compilation' nombre d'arguments incorrect, ou affection de propriété incorrecte]
Merci à vous
@+
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Gabriel, Charly, bonsoir le forum,

No comment Charly, Trim(Mid(mescou..., mabi...)) Ok c'est balèze mais alors là où je suis sur le cul c'est avec ton Cells(li, i\\\\\\\\10 + i + 1)! Je viens de téléphoner à Kiloutou pour un rouleau compresseur afin de pouvoir m'aplatir devant tant d'astuce... En plus c'est pas la première fois que tu me baises (si si ! Je suis désolé y'a pas d'autre mots...) sur un plan de suite illogique. Parcourir les colonne de 1 à 20 en sautant la 11 grâce à ta boucle. Chapeau ! Je le dis la rage au cœur, la sueur au front, et l'amer à la bouche (si ça avait été un forum sur word, j'aurais écrit l'amer Docu...) Chapeau !


Édition :

Ooops ! On s'est croisés Gabriel... Voit avec Charly, j'ai très mal à la tête sur ce coup. Et puis le Fort en Maths c'est lui non...

Message édité par: Robert, à: 02/03/2006 19:36
 

Charly2

Nous a quittés en 2006
Repose en paix
re Gabriel et Robert :)

Gabriel, je viens d'essayer ton code chez moi en faisant un copier/coller et je n'ai rencontré aucun problème ; il formate correctement le n° de tél.

Sinon, j'ai pô mis le code pour qu'il soit utilisé car si ton appli évolue, il est moins souple que celui de Robert au niveau des modifs ;)

A+
 
G

Gabriel

Guest
Bonjour Robert, Charly & le forum
Ce que je ne m'explique pas, et je n'arrive pas à en trouver la cause, c'est que tout mes formats
que ce soit de la date ou du monétaire, ne fonctionne plus... (tout allait bien jusqu'a ...???, je n'en sait trop rien !!!)

Voila le message :

['Erreur de compilation' nombre d'arguments incorrect, ou affection de propriété incorrecte]

J'ai du faire une 'bétise' mais j'ai beau farfouiller dans le code, je ne trouve pas. j'ai bien une sauvegarde de mes modules, mais ils ne sont pas récent, auriez vous une idée de ce qui peux bien se passer ?
Merci de mettre à profit vos lumières.
@+
 
G

Gabriel

Guest
Re Bonjour à tous,
J'ai fini par trouver...
j'avais enregistré un macro... qui s'appelait :
Sub Format()
ca m'a désactivé tout les formats des USF...

Avec du temps et de la patience...

@+
 

Statistiques des forums

Discussions
312 489
Messages
2 088 852
Membres
103 974
dernier inscrit
chmikha