XL 2016 Boucle sur lignes avec isempty() et sauts de lignes

maroon

XLDnaute Junior
Bonjour,

Avec cette macro j'aimerais copier les ligne d'une feuille 1 vers une feuille 2 en sautant une ligne à chaque fois sur la feuille 2. En revanche si la ligne i de la feuille 1 est vide alors ne rien faire et passer à la ligne suivante. Avec le code suivant:
VB:
Dim i&
Dim j&
Dim line As Variant

Derlig = worksheets("feuille1").Range("A" & Rows.Count).End(xlUp).Row
j = 1

For i = 1 To Derlig
    line = worksheets("feuille1").Rows(i)
           If IsEmpty(Rows(i).Value) = False Then
                  worksheets("feuille2").Rows(j).Value = line
                  j = j + 2
           Else: j = j
           End If
  
Next i
Mais en faisant du "pas à pas " je me rends compte que même lorsque la ligne rows(i) est vide la variable "j" est incrémentée à "j+2" alors que je voudrais que "j" reste à sa valeur et ne passe à j+2 que si rows(i) est non vide...

Si quelqu'un peut m'aider merci d'avance!!
 
Dernière édition:
Solution
Re

Voici comment je ferai (sans trop me casser la tête)
;)
VB:
Sub Recopie()
Dim T, tmp As Worksheet, i&
Sheets("Feuil1").Copy After:=Sheets(Sheets.Count)
Set tmp = ActiveSheet
tmp.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
T =tmp.[A1].CurrentRegion.Value
Sheets("Feuil2").Cells(1).Resize(UBound(T, 1), UBound(T, 2)) = T
Application.DisplayAlerts = False
tmp.Delete
With Sheets("Feuil2")
For i = .Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
.Cells(i, 1).Offset(1).EntireRow.Insert
Next
End With
End Sub
NB: La feuille 2 doit être vide avant de tester
Et sur la feuille 1 , il doit y avoir des données et du vide en colonne A

EDITION: Bonjour jmfmarques.

maroon

XLDnaute Junior
MDR jmfmarques!!

Moi qui dis
Non il n'y a rien en colonne A pour les lignes vides...
je pense que ça répond à ta question qui était
y a-t-il des lignes sans rien en colonne A mais avec quelque-chose dans une autre colonne ?
!? Et le "OUI" juste avant c'était aussi pour répondre à
Réponse OUI ou NON, sans autre prose, s'il te plait.
:D:D:p:p

Confirme-nous (si tel est le cas), que des lignes peuvent ne rien avoir en A et avoir quelque-chose dans une autre colonne.
Non je ne le confirme pas! Les lignes vides de la feuille 1 dont je parle sont vides en colonne A ainsi que sur tout le reste de la ligne... vide de A à Z:D:D:p:p
 

maroon

XLDnaute Junior
Resalut!:p
Du coup je comprends plus ou moins le code (j'analyse encore certaines choses et ça devrait aller).
Par contre je ne comprends pas le "Sheets(Sheets.Count)" dans cette ligne:
VB:
Sheets("RECAP").Copy After:=Sheets(Sheets.Count)

Autre chose: le problème pour moi c'est que j'aimerais pouvoir utiliser la feuille 2 pour faire un certains nombre d'opérations dont les résultats se mettront à jour à chaque fois que les données seront copiées/modifiées... hors j'ai l'impression que ton code ne remplace pas simplement le contenu de la feuille 2 mais supprime complètement les cellules?...
 

maroon

XLDnaute Junior
Etant donnée que mon "tableau de données" sur la feuille 1 ne sera jamais très important est-ce que je ne peux pas privilégier une boucle?
En fait c'est un peu comme si je cherchais à copier sur la feuille 2 en "ignorant" toutes les lignes paires: 2, 4, 6... et donc sans les effacer (car il y aura des formules à l'intérieur).

Je ne sais pas si c'est faisable... sinon je vais essayer de voir comment je peux faire en utilisant ta solution...
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, maroon

•>maroon
L'usage (enfin en théorie) c'est que si le demandeur solutionne sa question en remaniant un code et/ou formule proposé par un répondeur, c'est de poster dans son fil sa solution.
En effet, cela pourrait servir à des XLDnautes avec une problématique similaire.
Donc à défaut de fichier exemple (bien qu'il soit prêt...), tu peux (ou tu peux ne pas) poster ce qui "fonctionne nickel"
;)
 

Discussions similaires

Statistiques des forums

Discussions
312 275
Messages
2 086 707
Membres
103 377
dernier inscrit
fredy45