Création d'un nouveau tableau sans cellule vide [Résolu]

Messages postés
64
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012
- - Dernière réponse : robby98800
Messages postés
64
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012
- 9 juin 2012 à 09:58
Bonjour à tous,

Je vous explique mon sujet, le but de mon excel est de recenser des erreurs par machine. J'ai donc un tableau avec en ligne le numéro des machines et en colonne le libellé des erreurs.
Les machines n'ont pas toutes les erreurs donc il y a des cellules vides (en fait les cellules vides sont remplies par "" quand elles ne vérifient pas une condition SI). Je voudrais créer un tableau qui récapitule les erreurs qu'ont réellement chaque machine (c'est à dire réécrire les erreurs qui satisfont à la conditon dans la colonne de la machine en question.
Je dois aussi prendre en compte que le nombre d'erreur (donc de ligne) est à chaque semaine est différent.

Je met en pièce jointe le ficher :
- L'onglet "Comparaison_modele_erreur" est le tableau avec les cellules vides, et je voudrais mettre le nouveau tableau dans l'onglet "Feuil2" sans les cellules vides
http://cjoint.com/?0FhhOqprRNX

J'espère avoir été clair, merci de votre aide !
Afficher la suite 

20/24 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
3
Merci
Voilà ===>>
J'ai :
- fait en sorte de transformer tout en valeurs constantes
- ajouté un garde-fou pour le cas (même peu probable) d'acune ligne remplie
- ajouté un garde-fou pour le cas où, au contraire, toutes les lignes seraient remplies
=>>>
 Sheets("Comparaison_modèle_erreur").Cells.Copy Destination:=Sheets("Feuil2").Range("A1")
  Dim toto As Range, plage As Range, tablo
  With Sheets("Feuil2")
    Set plage = .Range("B3:" & .Cells.SpecialCells(xlCellTypeLastCell).Address) ' on ne traite qu'à partir de B3
    '--------------------------------
    tablo plage.Value '            |>> on transforme tout en constantes via une matrice des valeurs
    .Range(plage.Address) = tablo '--
    
    On Error Resume Next '--------------------------------------------------       pour le cas, même si peu probable,
    Set toto = plage.SpecialCells(xlCellTypeConstants) '                    |===>> d'absence totale de valeurs
    If Err > 0 Then MsgBox "aucune donnée à traiter présente !": Exit Sub '-
    
    toto.EntireRow.Hidden = True
    
    On Error Resume Next '-------------------- pour le cas où aucune ligne ne serait à détruire
    
    plage.SpecialCells(xlCellTypeVisible).EntireRow.Delete
    On Error GoTo 0
    toto.EntireRow.Hidden = False
  End With


Teste en situation réelle chez toi et fais-moi savoir (de sorte à ce que je quitte mon fichier de test)

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
3
Merci
Il sera par ailleurs bon d'ajouter (tout en haut) cette première ligne :
 Sheets("Feuil2").Cells.ClearContents

Pour le cas (même si improbable) où la feuille des données se trouverait moins remplie que celle des résultats (après des suppressions directes sur la feuille des données).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Bonjour,
bien embrouillé tout cela.
Et tu trouveras très peu de gens acceptant de courir le risque d'ouvrir un classeur qu'ils n'ont pas créé ! Tes explications doivent être claires et suffisantes.
Est-ce que cela se traduit par ceci :
"Je voudrais copier en feuil2 uniquement les lignes de Feuil1 non vides en colonne B"
(comme tu le vois, je m'exprime techniquement, dans autres explications inutiles (machines, erreurs, patati, patata))
confirme ou corrige ma supposition, sans tout le reste (que nous n'avons pas à connaître).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
30
Date d'inscription
mercredi 23 mai 2012
Statut
Membre
Dernière intervention
13 août 2012
0
Merci
Bonjour

J'ai fait un peu ce type de chose

J'avais d'abord complètement "dérouler" le tableau

colonne 1 les noms des produits
colonne 2 les problèmes (ou case vide),obtenue par copier//collage transposé de chaque ligne du tableau

A partir d'un tableau 8produits*20défauts j'obtiens 2 colonnes et 160 lignes
Je supprime les lignes ou il n'y a rien dans la colonne 2 (pas ce défaut)

J'espère avoir été clair, sans explications inutiles
Commenter la réponse de DamienGB
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Ouais ...
Es-tu bien certain, Damien, de ce qu'il n'est pas bien plus simple d'utiliser SpecialCells(à lire dans l'aide VBA) ?
Et aucune boucle (la méthode Union suffiura).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Et dire que le "mécanisme" serait presque identique (même plus simple) à celui que je lui ai exposé dans cette discussion :
Tapez le texte de l'url ici.
qu'il a laissée sans suite


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Pour être plus clair sur ce que j'affirme :
Toutes les données sur Feuil3 ===>> on génère une Feuil4 avec ce qui convient
Sheets("Feuil3").Cells.Copy Destination:=Sheets("Feuil4").Range("A1")
  Dim toto As Range, plage As Range
  With Sheets("Feuil4")
    Set plage = .Range("B1:" & .Cells.SpecialCells(xlCellTypeLastCell).Address)
    Set toto = plage.SpecialCells(xlCellTypeConstants)
    toto.EntireRow.Hidden = True
    plage.SpecialCells(xlCellTypeVisible).EntireRow.Delete
    toto.EntireRow.Hidden = False
  End With

Pas la moindre boucle, dans ce mécanisme ultra-rapide
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
64
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012
0
Merci
Bonjour ucfontu,

Tout d'abord excuse moi si mon vocabulaire a pu te sembler peu approprié. Je pense que tu as néanmoins compris mon problème.
Je voudrais copier en feuil2 uniquement les lignes non vides qui commencent en colonne B de la feuil1.
Merci de m'avoir répondu, j'ai rentré la macro que tu m'as passé mais j'ai un message d'erreur qui apparait.
Commenter la réponse de robby98800
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Quel message d'erreur et sur quelle ligne de quel code ?
Dire "j'ai un message d'erreur" = ne rien dire du tout, hein !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Bon !
Pour ton info : je viens de simuler des données et tester mon code (puisque doute il y avait !) ===>> je n'ai personnellement aucun message d'erreur et j'ai le résultat obtenu !
Conclusion : mes questions dans mon messages précédent ont leur importance et leurs réponses claires (et avec le code) sont indispensables


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
64
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012
0
Merci
L'erreur obtenu est la 9 qui se trouve à cette ligne :
Sheets("Feuil3").Cells.Copy Destination:=Sheets("Feuil4").Range("A1")

PS: désolé de répondre que mtn je suis en Nouvelle calédonie
Commenter la réponse de robby98800
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Cette erreur est claire et signifie ce qu'elle signifie (bien que tu te sois contenté d'en donner le N°, sans le message d'erreur) ===>>
La feuille Feuil3 ou la feuille Feuil4 n'existent pas !
Tu attends un miracle, dans de telles conditions ?



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
64
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012
0
Merci
Pourtant les Feuil 3 et Feuil 4 existe bien. J'ai changé Feuil3 et Feuil4 respestivement par le nom de leur onglet Comparaison_modele_erreur et res. Ce qui donne :
Sub ranger()
Sheets("Comparaison_modele_erreur").Cells.Copy Destination:=Sheets("res").Range("A1")
  Dim toto As Range, plage As Range
  With Sheets("res")
    Set plage = .Range("B1:" & .Cells.SpecialCells(xlCellTypeLastCell).Address)
    Set toto = plage.SpecialCells(xlCellTypeConstants)
    toto.EntireRow.Hidden = True
    plage.SpecialCells(xlCellTypeVisible).EntireRow.Delete
    toto.EntireRow.Hidden = False
  End With
End Sub

Il me renvoit Erreur d'exécution '1004' : pas de cellules correspondantes
Commenter la réponse de robby98800
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
en te rappelant () ce que je t'ai dit de l'exemple que je t'ai donné, hein === >>
Toutes les données sur Feuil3 === >> on génère une Feuil4 avec ce qui convient

Dans cet exemple : Feuil3 et Feuil4 doivent exister.
Rien ne t'empêche, si tu veux en plus créer de toutes pièces Feuil4 dynamiquement, de le faire en tout début de code (méthode Add).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Ne pas confondre feuilles nommées Feuil3 et Feuil4 avec Feuil 3. et Feui 4, hein ...
Il me renvoit Erreur d'exécution '1004' : pas de cellules correspondantes

Ce qui voudrait dire que :
- soit tu n'as aucune constante (valeur) à traiter dans la feuille de départ (et alors, évidemment toto es nothing...)
- soit toute ta feuille est remplie de constantes (étonnant) et qu'alors tout devient hidden et qu'ensuite (évidemment) plus aucune cellule visible ! Ce cas est quasi-impossible.
Sur quelle ligne de code, cette erreur (tu aurais dî le dire sans que je te le demande).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
64
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012
0
Merci
Dans le excel Feuil3 (données)et Feuil10 (celle qu'on veut remplir) existent bien, je ne comprend pas pourquoi ça ne fonctionne pas j'ai fait une capture d'écran pour te montrer.
http://cjoint.com/?3FhxutceE7N
Commenter la réponse de robby98800
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
La ligne dénoncée est donc :
Set toto = plage.SpecialCells(xlCellTypeConstants)

ce qui veut dire que l'on est dans le cas :
- soit tu n'as aucune constante (valeur) à traiter dans la feuille de départ (et alors, évidemment toto es nothing...)

que contient donc ta feuille, en plus de la colonne A ? Rien ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
64
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012
0
Merci
Tout est dans ce lien : http://cjoint.com/?0FhhOqprRNX
La feuille de départ est "Comparaison_modele_erreur"
La feuille d'arrivée est "Feuil2"
Commenter la réponse de robby98800
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Vu !
Ce qui se passe, c'est que (hormis la colonne A) ta feuille n'est pas remplie de valeurs directes, mais de formules.
Je vais apporter un petite modif pour faire face à cela également.
Attends 15 minutes.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
64
Date d'inscription
mardi 29 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012
0
Merci
Oui voila comme je disait les cases vides sont vides parce qu'elles ne satisfont pas à une formule.
Merci
Commenter la réponse de robby98800