Copier les lignes avec valeurs sans les lignes vides
VDB.57
-
VDB.57 -
VDB.57 -
Bonjour à tous,
Encore une fois je me tourne vers vous.
Mon objectif est de recueillir l'ensemble des valeurs contenues sur la plage « AA2:AH36 » de ma feuill1 et d'insérer à la suite les lignes non vides en « A2 »de ma feuill2.
La difficulté réside dans le fait que ma plage « AA2:AH36 » contient des cellules vides avec des formules qui sont copiées également, ce que je ne souhaite pas...
J'ai beau chercher je ne parviens pas à modifier ma macro me permettant de réaliser cette opération...
Je joins ma macro incomplète.
Merci par avance.
Sub Bouton5_Clic()
Sheets("feuil1").Select
Sheets("feuil2").Visible = True
Dim Ligne As String
Ligne = Range("AA2:AH" & Range("AA65536").End(xlUp).Row).Address
Range(Ligne).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("feuil2").Select
Dim i As Long
i = Sheets("feuil2").Range("A65536").End(xlUp).Row
Sheets("feuil2").Range("A" & i + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Transpose:=False
Range("A1").Select
End Sub
Encore une fois je me tourne vers vous.
Mon objectif est de recueillir l'ensemble des valeurs contenues sur la plage « AA2:AH36 » de ma feuill1 et d'insérer à la suite les lignes non vides en « A2 »de ma feuill2.
La difficulté réside dans le fait que ma plage « AA2:AH36 » contient des cellules vides avec des formules qui sont copiées également, ce que je ne souhaite pas...
J'ai beau chercher je ne parviens pas à modifier ma macro me permettant de réaliser cette opération...
Je joins ma macro incomplète.
Merci par avance.
Sub Bouton5_Clic()
Sheets("feuil1").Select
Sheets("feuil2").Visible = True
Dim Ligne As String
Ligne = Range("AA2:AH" & Range("AA65536").End(xlUp).Row).Address
Range(Ligne).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("feuil2").Select
Dim i As Long
i = Sheets("feuil2").Range("A65536").End(xlUp).Row
Sheets("feuil2").Range("A" & i + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Transpose:=False
Range("A1").Select
End Sub
A voir également:
- Copier les lignes avec valeurs sans les lignes vides
- Excel trier par ordre alphabétique en gardant les lignes - Guide
- Afficher toutes les lignes masquées excel ✓ - Forum Excel
- Re-afficher des colonnes masquées ✓ - Forum Excel
- Comment supprimer les pages vides sur word - Guide
- Filtre excel ne fonctionne pas sur toutes les lignes ✓ - Forum Excel
5 réponses
Bonjour,
ci-dessous code à essayer
ci-dessous code à essayer
Sub Bouton5_Clic()
Dim plage_à_copier, première_cellule_vide, plage_collée As Range
'copie feuille de AA2 à la dernière cellule utilisée de la colonne AH
With Sheets("feuil1")
Set plage_à_copier = Range(.[AA2], .[AH:AH].Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious))
End With
plage_à_copier.Copy
'collage sur feuille 2 à partir de la première cellule vide
With Sheets("feuil2")
Set première_cellule_vide = .[A:A].Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext)
End With
première_cellule_vide.PasteSpecial Paste:=xlPasteValues, Transpose:=False
'suppression cellules vides
Set plage_collée = première_cellule_vide.Resize(plage_à_copier.Rows.Count, plage_à_copier.Columns.Count)
plage_collée.SpecialCells(xlCellTypeBlanks).Delete (xlShiftToLeft)
plage_collée.SpecialCells(xlCellTypeBlanks).Delete (xlShiftUp)
End Sub
--
Bonsoir thev,
Avant tout merci pour ta réponse.
Lorsque le code arrive à la 1° ligne "plage_collée" j'ai l'erreur 1004 "pas de cellules correspondantes".
J'ai supprimé ces 2 dernières lignes "plage_collée" et tout fonctionne bien.
Par contre j'ai essayé de mettre "Range("A1").Select" pour terminer proprement le code. IMPOSSIBLE de sélectionner cette cellule !!!
Avant tout merci pour ta réponse.
Lorsque le code arrive à la 1° ligne "plage_collée" j'ai l'erreur 1004 "pas de cellules correspondantes".
J'ai supprimé ces 2 dernières lignes "plage_collée" et tout fonctionne bien.
Par contre j'ai essayé de mettre "Range("A1").Select" pour terminer proprement le code. IMPOSSIBLE de sélectionner cette cellule !!!
Bonjour,
J'ai omis de vous dire qu'en plus de sélectionner A1 en fin de code , je voudrai copier le même résultat en feuil3 sachant que les feuils 2 et 3 sont protégées (sans mot de passe).
J'abuse de votre savoir et de votre implication.
Merci
J'ai omis de vous dire qu'en plus de sélectionner A1 en fin de code , je voudrai copier le même résultat en feuil3 sachant que les feuils 2 et 3 sont protégées (sans mot de passe).
J'abuse de votre savoir et de votre implication.
Merci
Bonjour,
Effectivement, les lignes plages collées ne fonctionnent que s'il y a des cellules vides. Je les ai donc encadrées par une gestion de routine d'erreur.
Le "Range("A1").Select" ou en notation abrégée "[A1].Select" ne peut fonctionner que sur une feuille active.
ci-dessous nouveau code
Effectivement, les lignes plages collées ne fonctionnent que s'il y a des cellules vides. Je les ai donc encadrées par une gestion de routine d'erreur.
Le "Range("A1").Select" ou en notation abrégée "[A1].Select" ne peut fonctionner que sur une feuille active.
ci-dessous nouveau code
Sub Bouton5_Clic()
Dim plage_à_copier, première_cellule_vide, plage_collée As Range
'défintion plage de copie feuille de AA2 à la dernière cellule utilisée de la colonne AH
With Sheets("feuil1")
Set plage_à_copier = Range(.[AA2], .[AH:AH].Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious))
End With
'collage sur feuille 2 à partir de la première cellule vide
plage_à_copier.Copy
With Sheets("feuil2")
Set première_cellule_vide = .[A:A].Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext)
If première_cellule_vide Is Nothing Then Set première_cellule_vide = .[A1]
End With
première_cellule_vide.PasteSpecial Paste:=xlPasteValues, Transpose:=False
'suppression cellules vides feuille2
Set plage_collée = première_cellule_vide.Resize(plage_à_copier.Rows.Count, plage_à_copier.Columns.Count)
On Error Resume Next 'active la gestion d'erreurs
plage_collée.SpecialCells(xlCellTypeBlanks).Delete (xlShiftToLeft)
plage_collée.SpecialCells(xlCellTypeBlanks).Delete (xlShiftUp)
On Error GoTo 0 'désactive la gestion d'erreurs
'collage sur feuille 3 à partir de la première cellule vide
plage_à_copier.Copy
With Sheets("feuil3")
Set première_cellule_vide = .[A:A].Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext)
If première_cellule_vide Is Nothing Then Set première_cellule_vide = .[A1]
End With
première_cellule_vide.PasteSpecial Paste:=xlPasteValues, Transpose:=False
'suppression cellules vides feuille3
Set plage_collée = première_cellule_vide.Resize(plage_à_copier.Rows.Count, plage_à_copier.Columns.Count)
On Error Resume Next 'active la gestion d'erreurs
plage_collée.SpecialCells(xlCellTypeBlanks).Delete (xlShiftToLeft)
plage_collée.SpecialCells(xlCellTypeBlanks).Delete (xlShiftUp)
On Error GoTo 0 'désactive la gestion d'erreurs
'retour sur feuille 1
With Sheets("feuil1")
.Activate
.[A1].Select
End With
End Sub
--
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question