Copier coller selon condition

  • Initiateur de la discussion Initiateur de la discussion data2015
  • Date de début Date de début

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 !

D

data2015

Guest
Bonjour,

Je n'arrive pas a trouver une solution pour exporter des donnes ( par cololnnes ) d'une base XL a une nlle feuille simple :
Voici mon problème :
sur la 1er feuille il y a des données classer par colonnes , je veux juste copier ces données là ou il y a des notes et ne pas copier les vides , comme l'exemple sur la deuxiemme feuille.

Merci d'avance de m'aider vu que c'est un excercice répétitifs et qui me prends beaucoup de temps.

l'explication est sur la PJ
 

Pièces jointes

Re : Copier coller selon condition

Bonjour ,

une solution possible via vba,
l'option est de remonter uniquement les valeurs pas la mise en forme ( A voir éventuellement )

Code:
Sub Copie_Plus()
Dim Colonne As Long, Décale As Long
Dim Test As String
For Colonne = 1 To 100
 Test = Sheets("Détail Evolution Hebdo").Cells(12, Colonne).Value
 If Test <> "--" And Test <> "" Then
  Sheets("Feuil2").Range("A1:A57").Offset(0, Décale) = Sheets("Détail Evolution Hebdo").Range("A10:A67").Offset(0, Colonne - 1).Value
  Décale = Décale + 1
 End If
Next Colonne
End Sub
 
Re : Copier coller selon condition

Bonjour data2015, hello camarche pas,

Une autre solution avec ce code à placer dans un module standard :

Code:
Sub CopierColonnes()
Dim F As Worksheet, P As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'à cause des liaisons dans votre fichier...
Set F = Feuil1 'CodeName feuille source
Feuil2.Activate 'CodeName feuille destination
Cells.Delete 'RAZ
Set P = Intersect(F.UsedRange, F.Rows("10:" & F.Rows.Count))
If P Is Nothing Then Exit Sub 'sécurité
P.EntireRow.Copy [A1] 'pour copier les formats
[A1].Resize(P.Rows.Count, P.Columns.Count) = P.Value 'copie les valeurs
Rows(3).Replace "--", "", xlWhole
On Error Resume Next 'si aucune cellule vide en ligne 3
Rows(3).SpecialCells(xlCellTypeBlanks).EntireColumn.Delete
Columns.AutoFit 'ajustement largeur des colonnes
End Sub
A+
 
Re : Copier coller selon condition

Re,

Sur Excel 2003 la macro précédente ne pose aucun problème.

Par contre sur Excel 2010 une colonne "Moyenne" n'est pas supprimée.

Cela à cause de l'apostrophe en Feuil2 ligne 3.

Pour y remédier on peut supprimer les colonnes des cellules vides en Feuil2 ligne 1 :

Code:
Sub CopierColonnes()
Dim F As Worksheet, P As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'à cause des liaisons dans votre fichier...
Set F = Feuil1 'CodeName feuille source
Feuil2.Activate 'CodeName feuille destination
Cells.Delete 'RAZ
Set P = Intersect(F.UsedRange, F.Rows("10:" & F.Rows.Count))
If P Is Nothing Then Exit Sub 'sécurité
P.EntireRow.Copy [A1] 'pour copier les formats
[A1].Resize(P.Rows.Count, P.Columns.Count) = P.Value 'copie les valeurs
Rows(3).Replace "--", "", xlWhole
On Error Resume Next 'si aucune cellule vide en ligne 3
Rows(3).SpecialCells(xlCellTypeBlanks).EntireColumn.Delete
Rows(1).SpecialCells(xlCellTypeBlanks).EntireColumn.Delete
Columns.AutoFit 'ajustement largeur des colonnes
End Sub
A+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
56
Affichages
3 K
Réponses
10
Affichages
974
  • Question Question
Microsoft 365 Code VBA
Réponses
6
Affichages
807
Réponses
6
Affichages
1 K
Réponses
9
Affichages
954
Retour