Cellules vides pas vraiment vides

  • Initiateur de la discussion Initiateur de la discussion chajmi
  • 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 !

chajmi

XLDnaute Occasionnel
Bonjour à tous
Je suis confronté à un problème pour lequel je n'ai pas trouvé de solution dans les différents sujets du forum.
Donc merci d'avance de me réorienté si je suis passé à côté de l'info.

Exposé du problème :
Je travail dans un classeur que j'ai mis en place, pour enregistrer chaque jour le poids du linge traité dans une blanchisserie

J'ai donc une feuille "SAISIE", dans laquelle je rentre les infos.
Ces infos sont reportées via des formules dans les 50 premières lignes de la feuilles (lignes à 0).
Ensuite, une macro copie ces lignes et va les coller (collage spécial / valeurs) dans ma feuille "Enreg.Poids", qui est un tableau récapitulatif de mes enregistrements.

Mon problème est que lorsque je copie les 50 lignes, il y a des cellules contenant des formules dont le résultat est 0. Et j'ai beau faire un "collage spécial / valeurs", la cellule de destination n'est pas vraiment vide, même s'il n'apparait rien dedans. Pour s'en appercevoir il suffit de faire "Atteindre cellules vides". On voit que la cellule copiée n'est pas selectionnée (par contre si on selectionne la cellule et qu'on fait "supprimer", celle ci est maintenant considérée comme une cellule vide).

Cela n'aurait que peu d'importance, sauf qu'à ma prochaine saisie, les infos vont être collées en dessous de "ces cellules vides pas vraiment vides". A chaque tri effectué par la macro ces fameuses cellules s'acumulent et mon tableau prend très vite une dimension énorme.

En espérant m'être fait comprendre, je remercie d'avance celui qui pourra m'aider.
 

Pièces jointes

Re : Cellules vides pas vraiment vides

Salut !

Tout d'abord, lorsque tu demande l'aide ed l'assistance, il serait judicieux de retirer les protections des feuilles...

Bon, une fois cette difficulté passée, j'ai bidouillé un petit code qui résoud ton problème, je te laisse l'intégrer comme tu veux (je ne suis pas rentré dans le détail de tes macros pour savoir ou l'intégrer, tu dois connaitre ton code mieux que moi.

Code:
Sub suppr_faux_vides()
With Sheets("Enreg.Poids")
    L = .Range("A65536").End(xlUp).Row
End With

M = 0
For Each rw In ActiveSheet.Rows
    M = M + 1
    If M = L + 1 Then GoTo line1
    If rw.Cells(1, 1).Value = "" Then rw.ClearContents
Next rw

line1:
With ActiveSheet
    L = .Range("A65536").End(xlUp).Row
End With

End Sub

Il peut surement être amélioré mais au moins il fonctionne.

mikachu
 
Re : Cellules vides pas vraiment vides

Bonsoir.
Il y a aussi ces fonctions qui pouraient vous être utiles:
VB:
Function PlgUti(ByVal PlageDép As Range, Optional ByVal PlagExam As Range = Nothing) As Range
Rem. Cherche la partie utilisée d'une plage, c'est à dire celle qui s'étend jusqu'à la dernière cellule renseignée de plus qu'une chaîne vide.
'    PlageDép: Plage de départ. Seule la 1ère cellule spécifiée est prise en compte pour la déterminer, et suffit donc pour une utilisation VBA.
'            Pour utilisation en formules, il est néanmoins nécessaire de spécifier la plage depuis celle ci jusqu'au reste des colonnes entières.
'    PlageExam: Plus grande plage susceptible de contenir la plage cherchée.
'            Facultatif: UsedRange assumé par défaut.
Dim LMax As Long, CMax As Long, NbL As Long, NbC As Long
On Error GoTo RienTrouvé
If PlagExam Is Nothing Then Set PlagExam = PlageDép.Worksheet.UsedRange
LMax = PlagExam.Find("*", PlagExam.Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row
CMax = PlagExam.Find("*", PlagExam.Cells(1, 1), xlValues, xlWhole, xlByColumns, xlPrevious).Column
On Error GoTo 0
NbL = LMax - PlageDép.Row + 1: If NbL < 1 Then GoTo CEstToutVide
NbC = CMax - PlageDép.Column + 1: If NbC < 1 Then GoTo CEstToutVide
Set PlgUti = PlageDép.Resize(NbL, NbC)
Exit Function
RienTrouvé: Resume CEstToutVide
CEstToutVide: Set PlgUti = Nothing
End Function
'

Function ColUti(ByVal PlageDép As Range) As Range
Rem. Comme PlgUti, mais la plage rendue se limitera aux colonnes couvertes par la plage de départ spécifiée
Set ColUti = PlgUti(PlageDép, Intersect(PlageDép.Worksheet.UsedRange, PlageDép.EntireColumn))
End Function
Remarque: elles font partie de OutIdx aussi.
Cordialement.
 
- 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

Discussions similaires

Réponses
4
Affichages
100
Réponses
4
Affichages
82
Réponses
5
Affichages
472
Retour