Code macro pour copier coller sur une autre feuille excel sans cases vides

Aurel73

XLDnaute Nouveau
Bonjour à toutes et à tous,

Je suis novice (vraiment débutant) en matière de VBA.
Mon problème est le suivant : sous excel 2010, je souhaite pouvoir copier des données d'une feuille 1 (contenus sur plusieurs colonnes) en supprimant les cellules vides afin de les coller à un emplacement spécifique sur une feuille 2...

Après de longues heures de recherche, j'ai trouvé un code qui me permet de suprimer les cases vides :

Sub masquer_ligne_Vide()
Dim cel As Range
For Each cel In Range("A1:A100")
If cel = "" Then
cel.EntireRow.Hidden = True
End If
Next
End Sub

Mais je ne trouve pas la suite...

Alors j'appel à une "ame" charritable qui voudrait bien m'aider...

Par avance merci,

Cordialement,
 

job75

XLDnaute Barbatruc
Re : Code macro pour copier coller sur une autre feuille excel sans cases vides

Re,

Je crois que ce qui vous embête c'est que les cases à cocher n'apparaissent pas dans "VERSION IMPRIMABLE".

Si vous voulez qu'elles apparaissent choisir dans leurs propriétés "Déplacer sans dimensionner avec les cellules".

A+
 

Aurel73

XLDnaute Nouveau
Re : Code macro pour copier coller sur une autre feuille excel sans cases vides

Re,

En effet, ça règle une grosse partie du problème! merci

Pour essayer de vous expliquer au mieux mon soucis, je me permets de prendre un exemple, n'ayant le language adequat...
dans l'onglet chiffrage, dans la section gros oeuvre, j'ai 2 lignes avec des poutres selctionnées! elles se reporte bien dans 'version imprimable', pas de soucis!
Mais s'il me faut dans une des lignes libres de 'chiffrage' remplir une nouvelle ligne dans la partie gros oeuvre, elle n'apparaît pas automatiquement dans 'version imprimable'...

J'espère vous avoir aidé à appréhender ce que je veux dire et que comme depuis le départ, vous aurez la solution magique à ce problème qui peut être source de grosse erreur de chiffrage pour moi!!

Encore merci de votre patience et de votre temps!
 

job75

XLDnaute Barbatruc
Re : Code macro pour copier coller sur une autre feuille excel sans cases vides

Mais s'il me faut dans une des lignes libres de 'chiffrage' remplir une nouvelle ligne dans la partie gros oeuvre, elle n'apparaît pas automatiquement dans 'version imprimable'...

Soyez plus clair : quelles sont les cellules que vous remplissez et qui n'apparaissent pas ?

C'est quand même simple : toutes les cellules listées en 3ème ligne de la macro sont affichées si elles sont renseignées.

A+
 

Aurel73

XLDnaute Nouveau
Re : Code macro pour copier coller sur une autre feuille excel sans cases vides

Bonjour,

Ben désolé de vous décevoir, mais cela ne fonctionne pas...
Je vous joints donc pour etre plus clair un "imprime" écran des 2 onglets :


Sur l'onglet chiffrage, plusieurs ligne ont été renseignées et pourtant, elles n'apparaissent pas sur l'onglet "version imprimable"

Tout mon problème est là...

Merci pour votre aide.
 

Aurel73

XLDnaute Nouveau
Re : Code macro pour copier coller sur une autre feuille excel sans cases vides

Re,

Le fichier est celui que vous m'avez en pièce jointe lors de votre dernier envoie...
J'ai l'impression que les lignes existent (puisque le total des tableaux est juste), et lorque sur l'onglet "version imprimable" j'augmente la hauteur des lignes, alors les lignes apparaissent...Mais cela demande une manipulation suplémentaire...
 

Aurel73

XLDnaute Nouveau
Re : Code macro pour copier coller sur une autre feuille excel sans cases vides

Excusez moi mais la taille du fichier Excel dépasse la taille autorisée... Je ne peux donc vous l'envoyer...

Vous avez raison le fichier fonctionne lorsque je crée les références sur l'onglet Chiffrage et que je "clic" sur la "version imprimable". Le problème intervient losque je retourne sur l'onglet chiffrage et que je souhaite ajouter des lignes... Dans ce cas, l'onglet "version imprimable" ne fait pas apparaitre la modification effectuée sur l'onglet chiffrage...
 

job75

XLDnaute Barbatruc
Re : Code macro pour copier coller sur une autre feuille excel sans cases vides

Re,

Bon dans cette nouvelle macro j'ai ajouté la ligne "RAZ nécessaire chez vous ???" voyez si ça règle votre problème.

Par ailleurs je ne m'étais pas occupé des objets (cases à cocher), il faut les supprimer avant de faire le copier-coller :

Code:
Private Sub Worksheet_Activate()
Dim r As Range, masque As Range, o As Object
Application.ScreenUpdating = False
DrawingObjects.Delete 'supprime tous les objets de la feuille
Cells.Delete 'RAZ nécessaire chez vous ???
Set r = [H36:H45,H49:H70,H74:H78,H82:H95,H99:H134,H138:H159,H163:H194,H198:H202,H206:H219]
Feuil1.Cells.Copy [A1] 'Feuil1 est le CodeName de la feuille
[A1].Copy [A1] 'pour alléger la mémoire
For Each r In r
  If r = "" Then Set masque = Union(r, IIf(masque Is Nothing, r, masque))
Next
If Not masque Is Nothing Then masque.EntireRow.Hidden = True
If [J8] = "RA" Or [J8] = "Perso" Then
  For Each o In DrawingObjects 'pour masquer les cases à cocher
    If Not Intersect(o.TopLeftCell, Rows("12:29")) Is Nothing Then o.Visible = False
  Next
  Rows("12:29").Hidden = True
End If
Me.PageSetup.PrintArea = "$H:$P" 'zone d'impression à adapter au besoin
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Chiffrage sept 2015(2).xlsm
    370.1 KB · Affichages: 34

job75

XLDnaute Barbatruc
Re : Code macro pour copier coller sur une autre feuille excel sans cases vides

Re,

Alors maintenant la question qui tue.

Quel est l'intérêt de la feuille "VERSION IMPRIMABLE" ?

Car on peut faire l'impression directement sur la feuille "CHIFFRAGE" :

Code:
Private Sub CommandButton1_Click() 'bouton Imprimer
Dim r As Range, masque As Range, o As Object
Application.ScreenUpdating = False
Set r = [H36:H45,H49:H70,H74:H78,H82:H95,H99:H134,H138:H159,H163:H194,H198:H202,H206:H219]
For Each r In r
  If r = "" Then Set masque = Union(r, IIf(masque Is Nothing, r, masque))
Next
If Not masque Is Nothing Then masque.EntireRow.Hidden = True
If [J8] = "RA" Or [J8] = "Perso" Then
  For Each o In DrawingObjects 'pour masquer les cases à cocher
    If Not Intersect(o.TopLeftCell, Rows("12:29")) Is Nothing Then o.Visible = False
  Next
  Rows("12:29").Hidden = True
End If
Me.PageSetup.PrintArea = "$H:$P" 'zone d'impression à adapter au besoin
Me.PrintPreview 'pour tester
'Me.PrintOut 'pour imprimer
Rows.Hidden = False 'affiche toutes les lignes
For Each o In DrawingObjects 'pour afficher tous les objets
 o.Visible = True
Next
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Chiffrage sept 2015(3).xlsm
    299.7 KB · Affichages: 46

Discussions similaires

Statistiques des forums

Discussions
312 232
Messages
2 086 462
Membres
103 222
dernier inscrit
2BS