Copie les cellules non vides d'une plage et les colle dans une autre feuille.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

edisien

XLDnaute Nouveau
Bonsoir,
Débutant en VBA, j'essaie d'élaborer une macro qui copie dans l'onglet RELEVE , les lignes non vide de la plage R2:Z32
Et qui les colles dans l'onglet EXPORT ("coller valeur" uniquement) , à partir de la ligne A9 et sans espace entre les lignes.
Le fichier excel ci-joint fait apparaitre le résultat t-elle qu'il devrait être.
J'ai adapté une macro mais elle ne me permet pas d'obtenir un résultat par ligne, tous s'affiche sur une seule colonne en fin de compte.
Si quelqu'un à une idée pour m'aider.
merci d'avance.
 

Pièces jointes

Re : Copie les cellules non vides d'une plage et les colle dans une autre feuille.

Bonsoir edisien,

Un essai dans le fichier joint:
VB:
Sub CopierCellulesNonVides()
Dim wsReleve As Worksheet, rgReleve As Range
Dim wsExport As Worksheet, rgExport As Range
Dim c As Range, i As Long
  Application.ScreenUpdating = False
  Set wsReleve = ThisWorkbook.Sheets("Releve")
  Set rgReleve = wsReleve.Range("R2:Z38")
  Set wsExport = ThisWorkbook.Sheets("Export")
  Set rgExport = wsExport.Range("A9")
  
  For i = rgReleve.Row To rgReleve.Row + rgReleve.Rows.Count - 1
    Set c = wsReleve.Range("R" & i & ":Z" & i)
    If Application.WorksheetFunction.Count(c) > 0 Then
      c.Copy
      rgExport.PasteSpecial xlPasteValues
      Set rgExport = rgExport.Offset(1)
    End If
  Next i
  
  wsExport.Range("A" & rgExport.Row & ":Z" & Rows.Count).ClearContents
  Application.ScreenUpdating = True
End Sub
 

Pièces jointes

Re : Copie les cellules non vides d'une plage et les colle dans une autre feuille.

Bonsoir,

J'ai un peu modifié le code, le principe :

-boucle sur le tableau de la ligne 2 à la dernière ligne du tableau ( avec L)
-Si présence d'un donnée en colonne L ==> transfert des cellules de R.:Z. vers A.:I. (LS = ligne en sortie)


Code:
Sub CopierCellulesNonVides()

Dim wsReleve As Worksheet
Dim wsExport As Worksheet
Dim L As Long
Dim LS As Long

Application.ScreenUpdating = False

Set wsReleve = ThisWorkbook.Sheets("Releve")        'le nom de ta feuille qui contient les données


Set wsExport = ThisWorkbook.Sheets("Export")  'le nom de ta feuille de destination

LS = 8
For L = 2 To wsReleve.Range("A65536").End(xlUp) 'dernière ligne du tableau
    If wsReleve.Cells(L, 18) <> "" Then
       LS = LS + 1
       wsExport.Range("A" & LS & ":I" & LS) = wsReleve.Range("R" & L & ":Z" & L).Value
    End If
Next
Application.ScreenUpdating = True

End Sub
 
Re : Copie les cellules non vides d'une plage et les colle dans une autre feuille.

Hello,
Un grand merci pour les deux réponses.
Les codes fonctionnent parfaitement bien .
Ca va me faire gagner du temps !!
J'ai encore du chemin à parcourir pour devenir autonome en VBA.

Bonne journée
Edisien
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
590
Retour