question sur copie de plage

ThomasR

XLDnaute Occasionnel
Bonjour le forum,

j'essai de faire la copie d'une plage mais je mis prend tres mal

Sheets(var1).Range(Cells(i, 1), Cells(i, finc)).Copy _
Destination:=Worksheets(var2).Range('A' & finl)

je souhaite faire par le biais de cells car j'utilise une variable qui me donne le bout de la ligne

dans ce cas là je pourais faire un EntireRow mais un jour j'aurais peut être besoin de faire une copie de la colonne E à ...

D'avance merci
Thomas®
 

ThomasR

XLDnaute Occasionnel
re,

voici mon code (un et trois et col sont des variables declaré dans généralité).

j'ai un message d'erreur 'Next sans For' pour la zone en bleu

Private Sub CommandButton1_Click()
Dim u As Integer
Dim compteur
Dim collon

Dim finl As Integer
Dim finc As Integer

While compteur < 2
For i = 1 To Sheets(trois).Range('A65000').End(xlUp).Row
For u = 1 To Sheets(un).Range('A65000').End(xlUp).Row
For collon = 1 To col

If Sheets(trois).Cells(i, collon) <> Sheets(un).Cells(u, collon) Then

Next collon


finl = Sheets(un).Range('A65000').End(xlUp).Row + 1
finc = Sheets(trois).Range('IV' & u).End(xlToLeft).Column

Sheets(trois).Range(Cells(i, 1), Cells(i, finc)).Copy
Worksheets(un).Range('A' & finl).Paste


End If

Next u
Next i
compteur = compteur + 1
Wend

End Sub

je ne comprend pas :pinch:

D'avance merci
 

ChTi160

XLDnaute Barbatruc
Salut Thomas®
bonjour Simons

le problème ne vient il pas de la plage de recopie

peut être qu'avec desSELECT
methode Range aime celà
je sais plus qui si (c'est @+Thierry qui souvent me dit que)et il me parle du Select
donc on peut essayer, j'ai testé celà et ca fonctionne à adapter peut être
Sub copie()
Dim finc As Byte, i As Byte, finl As Byte
Application.ScreenUpdating = False
i = 2
finl = 4
finc = 4
With Worksheet('Feuil1')
.Select
.Range(Cells(i, 1), Cells(i, finc)).Copy
End With
With Worksheets('Feuil2')
.Activate
.Range('A' & finl).Select
.Paste
End With
With Application
.CutCopyMode = False
.ScreenUpdating = True
End With
End Sub
tu nous tiens au courant
Merci
 

ChTi160

XLDnaute Barbatruc
re j'avais pas vu ton dernier post

pour ce qui est du Next il n'est pas a sa place tu dois le mettre en bout de boucle la il est en plein milieu de ta condition If

il devrait être

End If
Next 'par ici plutôt
Next u
Next i

Message édité par: ChTi160, à: 17/06/2005 14:20
 

ThomasR

XLDnaute Occasionnel
Bonjour à tous, le forum,

Merci pour ce bout de code ChTi160, je l'ai modifier pour le mettre dans ma macro mais là erreur :pinch: .

pour l'erreur que je mentionné tout à l'heure j'ai trouvé l'erreur c'est que mon end if n'etait pas dans ma boucle for next collon B) .

sinon j'ai bien un problème pour la copie de ma ligne

je joint mon fichier apres modif avec la macro de ChTi160.

Merci
[file name=Doublon1.zip size=15948]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Doublon1.zip[/file]
 

Pièces jointes

  • Doublon1.zip
    15.6 KB · Affichages: 11
  • Doublon1.zip
    15.6 KB · Affichages: 9
  • Doublon1.zip
    15.6 KB · Affichages: 12

ThomasR

XLDnaute Occasionnel
re,

Oups ChTi160, j'avais pas vu ton message, merci

je ne comprend pas le resultat de cette macro :unsure: ,

je voulais comparer des lignes de feuille différente pour copier les ligne non doublon dans la 1er feuille selectionner.

je pensais que ce code etait bon mais il me colle 30000lignes :evil: .

je comprend pas ou il boucle comme ca le fichier que j'ai joint bloque car il manque un s à 'With Worksheet'.

si quelqu'un voit ou je boucle

d'avance merci
 

ThomasR

XLDnaute Occasionnel
je vous joint mon fichier corrigé mais qui copie je ne sais quoi ?? :pinch: [file name=Doublon1_20050617145851.zip size=17050]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Doublon1_20050617145851.zip[/file]
 

Pièces jointes

  • Doublon1_20050617145851.zip
    16.7 KB · Affichages: 11

Hellboy

XLDnaute Accro
Bonjour Thomas®,ChTi160

Code:
For i = Sheets(1).Range('A65000').End(xlUp).Row To 1 Step -1
    For u = Sheets(2).Range('A65000').End(xlUp).Row To 1 Step -1
        If (Sheets(1).Range('A' & i) = Sheets(2).Range('A' & u)) And (Sheets(1).Range('B' & i) = Sheets(2).Range('B' & u)) And (Sheets(1).Range('C' & i) = Sheets(2).Range('C' & u)) And (Sheets(1).Range('D' & i) = Sheets(2).Range('D' & u)) Then
            Sheets(2).Range('A' & u).EntireRow.Delete
        End If
    Next u
Next i

En passant, il serait préférable de faire tes boucle dans le sens in verse lorsque tu efface des lignes, parce que tu va manque une ligne chaque fois que tu en efface une.


Aussi, l'utilisation des goto est a éviter le plus que possible. C'est pratique mais, peu amener a confusion. Peu etre remplacer par une procédure supplémentaire.

J'aisseai de voir ce que tu essaie de faire Thomas, j'ai la tête qui est embrouillé. :eek:
 

ThomasR

XLDnaute Occasionnel
Bonjour Hellboy,le forum,

merci pour ta reponse mais dans ce fichier je ne supprime pas de ligne, mais merci pour l'info car can je sup des lignes j'ai souvent le reflexe de srucharger en code (i = i -1) car justement je ne fait pas en step - 1 (je debut est il est important de ne pas prendre les mauvais defaut tt de suite).

aors merci
 

Hellboy

XLDnaute Accro
Bonjour

Ceci est ds le module ThisWorkBook de ton fichier. Pas pour te contrarier :eek: mais...
Code:
Sub thomas()
Dim u As Integer

Sheets('Sheet3').Select
    Cells.Select
    Selection.Copy
    Sheets('Sheet2').Select
    Cells(1, 1).Select
    ActiveSheet.Paste
    
    
For i = Sheets(1).Range('A65000').End(xlUp).Row To 1 Step -1
    For u = Sheets(2).Range('A65000').End(xlUp).Row To 1 Step -1
        If (Sheets(1).Range('A' & i) = Sheets(2).Range('A' & u)) And (Sheets(1).Range('B' & i) = Sheets(2).Range('B' & u)) And (Sheets(1).Range('C' & i) = Sheets(2).Range('C' & u)) And (Sheets(1).Range('D' & i) = Sheets(2).Range('D' & u)) Then
            Sheets(2).Range('A' & u).EntireRow.Delete
        End If
    Next u
Next i

End Sub

a+
 

ThomasR

XLDnaute Occasionnel
Hellboy,

siute à tes conseil si tu te souvient

Code:
Dim u As Integer
Dim compteur
Dim collon
Sheets(deux).Select
    Cells.Select
    Selection.Copy
    Sheets(trois).Select
    Cells(1, 1).Select
    ActiveSheet.Paste
    
While compteur < 2
For i = 1 To Sheets(un).Range('A65000').End(xlUp).Row
For u = 1 To Sheets(trois).Range('A65000').End(xlUp).Row
For collon = 1 To col

If Sheets(un).Cells(i, collon) <> Sheets(trois).Cells(u, collon) Then
GoTo ligne1
End If
Next collon
Sheets(trois).Range('A' & u).Select
ActiveCell.EntireRow.Delete
ligne1:
Next u
Next i
compteur = compteur + 1
Wend

mais il est vrai qu'en step -1 je n'aurais pas à boucler 2x mais je voulais tester un while wend .

mais cette macro fonctionne meme si pas encore ecrite de facon optimisé :) .

la dans ce poste je ne fais pas du tout la même chose en fait je voulais repondre a une question posé ce jour mais je ne sais plus de qui :eek:

cette question est verifier dans la feuille 2 les lignes non presente dans la feuille 1 afin de les coller à la suite de feuille 1.

alors dans ce poste il falait comparer uniquement la colonne A

j'aurais pu le faire mais cela ma donné l'envie de faire la même chose que pour la macro ci dessus mais pour copier la ligne dans la feuille 1.

mais Là je vois pas ce qui bloque :pinch:
 

ChTi160

XLDnaute Barbatruc
re Thomas®
salut Hellboy
une petit via un tableau Temporaire
tu me tiens au courant
si j'ai bien compris on compare deux Feuilles et on ajoute les lignes qui ne figurent pas dans la feuille destination [file name=DoublonV1.zip size=20855]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/DoublonV1.zip[/file]
 

Pièces jointes

  • DoublonV1.zip
    20.4 KB · Affichages: 20
  • DoublonV1.zip
    20.4 KB · Affichages: 17
  • DoublonV1.zip
    20.4 KB · Affichages: 18

ThomasR

XLDnaute Occasionnel
re ChTi160,le forum,

Ton fichier tourne deja bien mieux que le mien.

mais si je ferme puis refait la même chose plusieurs foi il crée des doublon.

mais ton code n'a plus rien à voir avec le mien.

tu sais pas ce qui bloque dans le mien (car je suis sur que je ne suis pas loin).

en fait je n'ai pas vraiment besoin de ce fichier pour mon travail c'est juste afin d'afiner ma vision du code car la je pense ecrire un code avec une logique et je le lis et relis et je ne comprend pas .

mais ton fichier je vais l'etudier car tu utilises des données temps et je ne me suis pas encore vraiment penché sur ce type de programmation.

D'avance merci

Ps: je sais que c'est assé pénible de détricoter un code boiteux quand en plus c'est pas le sien :unsure:
 

Discussions similaires

Réponses
7
Affichages
434
Réponses
7
Affichages
368

Statistiques des forums

Discussions
312 305
Messages
2 087 082
Membres
103 458
dernier inscrit
Vulgaris workshop