XL 2013 Ne pas afficher lignes vides. (Résolu)

ebusmaximus

XLDnaute Nouveau
Bonjour,

J'ai quasiment terminé mon projet, mais je reviens vers vous pour un problème que je n'arrive pas à résoudre:

J'ai dans mon classeur TEST une feuille COLLAB1 où sont automatiquement copiées les données d'une autre feuille du même nom, depuis le classeur C. Pour le faire j'ai utilisé la formule

=[C.xlsx]COLLAB1!$A:$O

Mon problème est que les champs vides sont recopiés sous forme de zéro, ce qui perturbe un traitement effectué sur la feuille COLLABT du premier classeur.
J' aimerai que les lignes vides de COLLAB1 ne soient pas incluses lors de la copie.

Comment faire? Je sèche complètement.

Merci d'avance.
 

Pièces jointes

  • C.xlsx
    54.9 KB · Affichages: 30
  • TEST.xlsm
    738.2 KB · Affichages: 32
Dernière édition:

ebusmaximus

XLDnaute Nouveau
Merci maitre wolfus!! :D

Effectivement c'est déjà mieux. Il serait possible de ne pas afficher les lignes vides? Ou à défaut de forcer la page COLLAB1 de TEST à s'adapter automatiquement au fur et à mesure à ta taille de celle en C? Il y a une option pour ça?

Je m'explique : COLLAB1 dans TEST ne se met pas à jour si je n'ai pas manuellement "tirer" le tableau vers le bas pour lui donner (au moins) le même nombre de lignes que dans C.
Si j'essaie de prendre les devants en "tirant" COLLAB 1 à l'avance, je me retrouve avec des lignes vides/non renseignées qui apparaissent avant la synthèse COLLABT.

Je ne sais pas si je me fais bien comprendre. :confused:
 

Lone-wolf

XLDnaute Barbatruc
Re

Peut-être comme ceci (exemple): =SI (C2="";"-";C2). Et comme je l'ai di avant, mieux vaut ne pas laisser des cellules vides. Et ce n'est pas des lignes vides mais des cellules. Une ligne vas de A5 jusqu'à la dernière colonne de la feuille et il n'y a rien d'inscrit.
 
Dernière édition:

ebusmaximus

XLDnaute Nouveau
Re

Peut-être comme ceci (exemple): =SI (C2="";"-";G2). Et comme je l'ai di avant, mieux vaut ne pas laisser des cellules vides.

J'avais pensé à une formule conditionnelle, mais vu qu'il y a déjà une formule dans l'ensemble des colonnes de Collab 1 (=[C.xlsx]COLLAB1!$A:$O, je ne sais pas comment rajouter une 2e formule).

Je n'ai pas l'intention de laisser des cellules vides (à part pour tester rapidement), c'est le fonctionnement de la feuille qui m'oblige à le faire.
J'ai joint les fichiers pour bien faire comprendre le problème.
Dans le classeur C il y a présentement 21 lignes.
La 21e ligne n'apparaitra pas dans COLLAB1 de TEST à moins que je tire manuellement le tableau vers le bas. Pareil pour toutes les nouvelles lignes que je renseignerais dans C.
Si je tire à l'avance COLLAB1 de TEST pour avoir une marge suffisante ( par exemple jusqu'à la 32e ligne) je me retrouve avec des cases vides qui apparaitront dans la synthese de COLLABT.
Comme ceci :

HQy7q

http://imgur.com/a/HQy7q

http://imgur.com/a/MxQyw

http://imgur.com/a/5ia4K
MxQyw


Ou peut être en modifiant le code de la macro? (Si la case colonne Collab de COLLAB1 est vide, les données ne sont pas copiées dans COLLABT) :confused:
5ia4K
 

Pièces jointes

  • TEST.xlsm
    734.9 KB · Affichages: 36
  • C.xlsx
    53.2 KB · Affichages: 35
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour ebusmaximus :), le Forum :).

Oui, si tu ne veux pas avoir de lignes vides, bien sûr qu'il faut ajouter la condition dans la macro. Un exemple :

Dim WsSource As Workbook, ShSource As Worksheet

Set WsSource = WorkBooks("C.xlsx") : Set ShSource = WsSource.Sheets(1)

With ShSource
If .Cells(derlig, "C") = vbNullString Then 'vbNullString = cellule vide.
Exit Sub
Else
Cells(derlig, "E") = .Cells(derlig, "E")
End If
End With
 
Dernière édition:

ebusmaximus

XLDnaute Nouveau
Bonjour ebusmaximus :), le Forum :).

Oui, si tu ne veux pas avoir de lignes vides, bien sûr qu'il faut ajouter la condition dans la macro. Un exemple :

Dim WsSource As Workbook, ShSource As Worksheet

Set WsSource = WorkBooks("C.xlsx") : Set ShSource = WsSource.Sheets(1)

With ShSource
If .Cells(derlig, "C") = vbNullString Then 'vbNullString = cellule vide.
Exit Sub
Else
Cells(derlig, "E") = .Cells(derlig, "E")
End If
End With


Merci beaucoup, je teste dès que je rentre.
 

ebusmaximus

XLDnaute Nouveau
Bonjour ebusmaximus :), le Forum :).

Oui, si tu ne veux pas avoir de lignes vides, bien sûr qu'il faut ajouter la condition dans la macro. Un exemple :

Dim WsSource As Workbook, ShSource As Worksheet

Set WsSource = WorkBooks("C.xlsx") : Set ShSource = WsSource.Sheets(1)

With ShSource
If .Cells(derlig, "C") = vbNullString Then 'vbNullString = cellule vide.
Exit Sub
Else
Cells(derlig, "E") = .Cells(derlig, "E")
End If
End With


Bonsoir,

Ça n'a pas fonctionné, le traitement a été effectué sans aucun changement. Je crois que le problème vient du fait que la cellule ne soit pas techniquement vide, vu qu'elle contient une formule.
Si tu as une autre solution je suis preneur. J'ai essayé de "tricher" en utilisant les filtres, mais ça ne fonctionne que pour le 1er traitement.

:(

EDIT : Résolu, merci beaucoup pour ton aide lone-wolf.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 205
Messages
2 086 199
Membres
103 156
dernier inscrit
Ludo94130