Copier colonne d'un onglet sur l'autre ms ds un ordre différent
Résolu
bleue35
Messages postés
3
Statut
Membre
-
bleue35 Messages postés 3 Statut Membre -
bleue35 Messages postés 3 Statut Membre -
Bonjour les gens,
Ici une authentique bleue qui aurait besoin de votre aide.
En pompant une programmation de macro j'ai partiellement réussi à faire ce que je souhaite.
Soit copier les lignes vides d'un onglet « Relevé » sur un autre onglet « Synthèse » :
Sub Copier_lignes_non_vides()
Dim wsReleve As Worksheet, rgReleve As Range
Dim wsSynthese As Worksheet, rgSynthese As Range
Dim c As Range, i As Long
Application.ScreenUpdating = False
Set wsReleve = ThisWorkbook.Sheets("Releve")
Set rgReleve = wsReleve.Range("D7:H280")
Set wsSynthese = ThisWorkbook.Sheets("Synthese")
Set rgSynthese = wsSynthese.Range("A2")
For i = rgReleve.Row To rgReleve.Row + rgReleve.Rows.Count - 1
Set c = wsReleve.Range("D" & i & ":H" & i)
If Application.WorksheetFunction.Count(c) > 0 Then
c.Copy
rgSynthese.PasteSpecial xlPasteValues
Set rgSynthese = rgSynthese.Offset(1)
End If
Next i
wsSynthese.Range("D" & rgSynthese.Row & ":H" & Rows.Count).ClearContents
Application.ScreenUpdating = True
End Sub
J'ai donc les données nécessaires sur l'onglet « Synthèse » mais pas disposées dans le bon ordre.
C'est-à-dire que j'ai des données dans 5 colonnes qui s'affichent dans le même ordre que dans l'onglet « Relevé » or je voudrais que les informations disponibles sur la ligne se répartissent dans un autre ordre.
Soit que les données disponibles en colonne D de l'onglet « Relevé » se retrouvent en colonne E dans l'onglet « Synthèse » par exemple ; la F en A ; la E en B ; la G en D et la H en C. Sachant que les intitulés de colonne sont les mêmes.
Je vous remercie d'avance pour votre aide,
Bonne soirée
Bleue
Ici une authentique bleue qui aurait besoin de votre aide.
En pompant une programmation de macro j'ai partiellement réussi à faire ce que je souhaite.
Soit copier les lignes vides d'un onglet « Relevé » sur un autre onglet « Synthèse » :
Sub Copier_lignes_non_vides()
Dim wsReleve As Worksheet, rgReleve As Range
Dim wsSynthese As Worksheet, rgSynthese As Range
Dim c As Range, i As Long
Application.ScreenUpdating = False
Set wsReleve = ThisWorkbook.Sheets("Releve")
Set rgReleve = wsReleve.Range("D7:H280")
Set wsSynthese = ThisWorkbook.Sheets("Synthese")
Set rgSynthese = wsSynthese.Range("A2")
For i = rgReleve.Row To rgReleve.Row + rgReleve.Rows.Count - 1
Set c = wsReleve.Range("D" & i & ":H" & i)
If Application.WorksheetFunction.Count(c) > 0 Then
c.Copy
rgSynthese.PasteSpecial xlPasteValues
Set rgSynthese = rgSynthese.Offset(1)
End If
Next i
wsSynthese.Range("D" & rgSynthese.Row & ":H" & Rows.Count).ClearContents
Application.ScreenUpdating = True
End Sub
J'ai donc les données nécessaires sur l'onglet « Synthèse » mais pas disposées dans le bon ordre.
C'est-à-dire que j'ai des données dans 5 colonnes qui s'affichent dans le même ordre que dans l'onglet « Relevé » or je voudrais que les informations disponibles sur la ligne se répartissent dans un autre ordre.
Soit que les données disponibles en colonne D de l'onglet « Relevé » se retrouvent en colonne E dans l'onglet « Synthèse » par exemple ; la F en A ; la E en B ; la G en D et la H en C. Sachant que les intitulés de colonne sont les mêmes.
Je vous remercie d'avance pour votre aide,
Bonne soirée
Bleue
A voir également:
- Copier colonne d'un onglet sur l'autre ms ds un ordre différent
- Comment trier par ordre alphabétique sur excel - Guide
- Déplacer colonne excel - Guide
- Copier un disque dur sur un autre - Guide
- Ouvrir un onglet fermé - Guide
- Colonne word - Guide
3 réponses
Bonjour,
Vous dites :
Soit copier les lignes vides d'un onglet « Relevé » sur un autre onglet « Synthèse » :
Alors la suite est incompréhensible par rapport à des lignes vides... !
Vous dites :
Soit copier les lignes vides d'un onglet « Relevé » sur un autre onglet « Synthèse » :
Alors la suite est incompréhensible par rapport à des lignes vides... !
Bonjour,
oui désolée il manque la virgule...
J'ai réussi à avoir ce que je souhaite, soit....
Merci de votre aide
oui désolée il manque la virgule...
J'ai réussi à avoir ce que je souhaite, soit....
Merci de votre aide
Bonjour Bleue,
Essaies ce code avec CountA au lieu de Count :
Essaies ce code avec CountA au lieu de Count :
Option Private Module
Option Explicit
Public Sub Copier_lignes_non_vides()
Dim r As Range, i As Long
Application.ScreenUpdating = False
Set r = ThisWorkbook.Sheets("Synthese").Range("A2")
With ThisWorkbook.Sheets("Releve").Range("D7:H280")
For i = 1 To .Rows.Count
If Application.WorksheetFunction.CountA(.Rows(i)) > 0 Then
r.Resize(1, .Columns.Count).Value = .Rows(i).Value
Set r = r.Offset(1)
End If
Next i
r.Resize(Rows.Count - .Row + 1).ClearContents
End With
Application.ScreenUpdating = True
End Sub