doublons+nbr lignes

M

mat

Guest
bonjour a tous.

mon probleme vient du fait que qd je selectionne plus d'une ligne et que je souhaite la copier sur une autre feuille la seconde ligne selectionnee et tjs affichée en double. je pense que cela vient de ma boucle mais je ne voit pas ou est l erreur.

j ai essaye d effacer cette derniere ligne en comptant le nombre de lignes selectionnée mais cela marche pas donc aidez moi svp.

ce que je souhaiterai c que qd je selectionne 1 ligne alors un ligne est ajoutée a la feuille3 et que qd je selectionne 2 ou n lignes alors cela m ajoute 2 ou n lignes et pas 3 ou n+1 lignes comme ca le fais actuellement.


j ai laisse l exemple en piece jointe donc si vous voulez jettez un coup d oeil ca serai sympa.

bonne fin de journee a tous et merci d avance


@ + mat [file name=Classeur1_20050422161851.zip size=8739]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20050422161851.zip[/file]
 

Pièces jointes

  • Classeur1_20050422161851.zip
    8.5 KB · Affichages: 13

Creepy

XLDnaute Accro
Hello,

Je comprends bien le premiere partie de ton coed qui consiste à copier coller des lignes de la feuil1 vers la feuil2.

Par contre je ne comprends pas la seconde partie :

Do While Sheets('Feuil3').Cells(j, 14).Value <> ''
If Sheets('Feuil3').Cells(j, 14).Offset(1, 0).Value = '' Then
Selection.EntireRow.Select
Selection.Copy
Sheets('Feuil3').Select
Cells(j, 1).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(1, 13).Select
End If
j = j + 1

Mais l'erreur est là : If Sheets('Feuil3').Cells(j, 14).Offset(1, 0).Value = ''
Tu dis à excel de regarder la cellule du dessous (offset(1,0) de celle en cours (J,14) pour voir si elle est egale à zero.

Hors si tu es sur la dernière ligne celle du dessous est forcement =0 !!

et donc il execute la procedure qui se trouve dans le if. Ta premières ligne, il y a quelque chose dessous donc pas de copie, mais pas pour le 2eme... c'est le drame lol

Et à lafin tu arrives à copier du blanc donc la boucle s'arrete. Si tu fais une execution pas à pas tu t'apercevras que ta boucle copie une ligne vide avant de s'arreter.

Je ne sais pas vraiment ce que tu souhaites faire mais il doit y avoir bcp plus simple ton code est bien 'embrouillé'.

Si tu as besoin d'aide n'hesite pas ! mais soit précis sur ce que tu veux faire.

++

Creepy
 

porcinet82

XLDnaute Barbatruc
salut mat,

en attendant de regarder ta macro dans le detail et de trouver l'erreur, pourquoi tu n'as pas fait une simple boucle avec un for du genre:

Code:
Sub essai()
mat = Selection.Rows.Count
j = 1

For i = 1 To mat
    Sheets('Feuil1').Select
    Rows(j).Select
    Selection.Copy
    Sheets('Feuil3').Select
    Cells(j, 1).Select
    ActiveSheet.Paste
    j = j + 1
Next i
End Sub

c'est vrai que c'est vraiment le minimum, sans aucune vérification.

sinon tu ne pourrais pas détailler un peu ce que fait ton code. ca permettrai de directement chercher l'erreur plutot que d'essayer d'abord de le comprendre.

voila @+
 

porcinet82

XLDnaute Barbatruc
re mat, salut Creepy,

je suis entierement d'accord avec Creepy, je viens de jeter un coup d'oeil a ton code, et je me suis apercu que celui que je t'avais donné n'était pas terrible non plus, enfin...

sinon au sujet de ton code, je ne comprend pas ldu tout le sens de ta boucle while donc si tu peux donner qq info.

et je suis d'accord a vec Creepy sur la ligne de code qui merdouille

@+
 
S

salut vous

Guest
ben en faites je souhaite juste recopier les ligne selectionner sur la feuil3 et que celle ci s ajoute les unes a la suite des autres.

c'est assez simple a expliquer mais ensuite a coder j ai pas trop reussi.

si vous y arrivez je suis preneur.

j espere que j ai etais assez clair dans mon expliquation.


merci bcp a vous.

et peut etre a bientot si vous me trouvez une petite soluce lol

@+ mat
 

Creepy

XLDnaute Accro
RE

Bahhh voila c'est beaucoup plus claire !!!

Voici le code à remplacer dans ta macro. Comme c'est le WE et que je viens de rentrer je me fends même de tout plein de commentaire pour bien comprendre !

++

Creepy

Sub Scenario()

Dim J As Integer
' Declare la variable J comme acceptant que les nombres entiers
' De 0 à 65 000 je crois
Dim I As Integer
' Idem
Feuil1.Select
'selectionne la feuille 1
J = Selection.Rows.Count
'Compte le Nb de lignes selectionnées

Selection.EntireRow.Select
' Selection le tout
Selection.Copy
' Copy
Feuil3.Select
&nbsp; &nbsp;
If IsEmpty(Range('a1').Value) Then ' Test si la cellule A1 sur Feuil3 est vide
&nbsp; &nbsp; &nbsp; &nbsp; I = 1
' Si oui alors I = 1
&nbsp; &nbsp;
Else ' si non ...
&nbsp; &nbsp; &nbsp; &nbsp; I = Range('a1').End(xlDown).Row
&nbsp; &nbsp; &nbsp; &nbsp;
' Fonction permettant de definir la dernière cellule contenant du texte à partir d'un depart
&nbsp; &nbsp; &nbsp; &nbsp;
' Ici A1
&nbsp; &nbsp; &nbsp; &nbsp; I = I + 1
&nbsp; &nbsp; &nbsp; &nbsp;
' On ajoute 1 à la valeur du dessu pour prendre la ligne suivante (la première ligne vide)
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz