Suppression lignes vides

Je souhaite supprimer des lignes vides sur mon fichier. En effet, mon fichier récupère des données sur la feuil1 puis me les retranspose sur la feuil2 dès que "releve normale est indiquée sinon il ne m'affiche rien. Pour pouvoir ensuite travaillé sur le fichier je dois automatiser la supprission des lignes.

Oui mais voilà en cherchant sur le forum des sujets identiques, la solution que j'ai trouvée c'est l'utilisation du VBA. Or, je suis autodidacte sous Excel et je ne connais pas du tout les VBA . Existe-t-il un autre moyen plus simple???

Merci pour votre aide

Virginie

Bonjour,

Tu ne dis pas quelle méthode est employée pour récupérer les données sur la feuil1 et les transposer sur la feuil2 .

S'il s'agit d'une macro, tu peux sûrement ajouter une partie de code pour effectuer la suppression des lignes vides.

De toute façon, pour automatiser la suppression, tu devras forcément passer par VBA.

A+

Bonjour,

Oui j utilise une macro pr recup les données de la feuille 1 à la feuille 2.

Je ne connais rien au vba j ai commencé à regarder les cours vba sur le site en y allant pas à pas mais je n ai pas trouve pour supprimer des lignes automatiquement. En effet, suivant les données insérer dans la feuille 1, les lignes à supprimer ne seront jamais les mêmes donc impossible d utiliser les macros...enfin je crois

Merci pour votre aide

Virginie

Il faudrait que tu joignes un classeur exemple avec quelques explications relatives aux lignes à supprimer.

A+

Ok frangy, je l ai laisse ds mon disque dur, je le transfert demain.

Merci

Virginie

Bonjour,

Donc voici ci-joint un fichier test allégé.

Donc feuille 1 "Export" = l'export brut - Cet export changera tout le temps

Feuille 2 "Données" = récupération des données à exploiter par la suite

Merci pour votre aide

@+

Virginie

j'ai fait une macro "recherche" qui copie les résultats de la recherche"releve normale" et

les envoie sur la feuille "données" (sans lignes vides)

Bonjour Zarik et merci beaucoup pour ton aide.

Par contre, peux tu m'expliquer comment tu as fait, pour que la macro comprenne de remonter uniquement les éléments dès que "releve normale" s'affiche???

En plus, je vais être exigeante, lors de l'export .csv, je me retrouvbe avec ' avant les chiffres, c'est poour cette raison qu'en colonne 12 et 13, j'avais converti sans le ' ....Peux tu faire en sorte que la macro aille me chercher les colonnes 12 et 13 plutot que 9 et 10 (ces colonnes seront masquées pour éviter des erreurs).

Merci encore

Virginie

Dans le code il y a la ligne suivante:

.Find(What:="RELEVE NORMALE", LookIn:=xlValues, lookat:=xlWhole)

du coup, si tu souhaite changer la recherche, modifie cette partie( ou mieux indique une cellule comme sheets("Feuil1").range("A1"), il te suffira de modifier la cellule pour modifier la recherche)

Peux tu faire en sorte que la macro aille me chercher les colonnes 12 et 13

il m'aime pas les formules, ca renvoi #ref! et comme j'apprends, j'ignore comment palier a cela, dsl.

Edit, j'viens de trouver:

Super Merci

A très bientôt

Virginie

Bonjour,

Juste pour le caractère spécial devant les chiffres...

tu sélectionnes toutes les cellules, en cliquant sur le carré gris, au dessus du numéro 1 de ligne, et à gauche du A des colonnes...

Tu fais Edition/Remplacer (raccourci Ctrl + H)

Dans la case "rechercher", tu tapes "AltGr + 7 puis espace"

Tu laisses vide la case "remplacer par"

tu cliques sur "remplacer tout"

bon courage

Bonjour,

J'ai encore besoin de votre aide.

Zarik, m'a donné la solution afin que le fichier me remonte les lignes dès lors que "releve normale" était indiquée et ca fonctionne.

Sauf que maintenant, j'aurai besoin qu'il me fasse remonter les lignes dès lors que "releve normale" ou "index de départ" ou "...."

sont présents dans la colonne.

J'ai essayé les solutions suivantes :

Set cel = .Find(What:="RELEVE NORMALE" And "INDEX DE DEPART", LookIn:=xlValues, lookat:=xlWhole)

ou Set cel = .Find(What:="RELEVE NORMALE" Or "INDEX DE DEPART", LookIn:=xlValues, lookat:=xlWhole)

Mais cela ne fonctionne pas....

Merci pour votre aide

A bientôt

Virginie

j'aurai besoin qu'il me fasse remonter les lignes dès lors que "releve normale" ou "index de départ" ou "...."

sont présents dans la colonne.

Plusieurs solutions:

1)recopier le code avec "index de depart" comme seul changement (2 recherche dans une seule macro)

2)mettre une cellule en critere de recherche, la macro permets d'enchainer les recherches reste a la lancer en donnant une valeur differente a la cellule(creation d'une liste avec"releve normale" , "index de départ" , "...." )

Eh, fidèle au poste Zarik

Merci une fois de plus pour ton aide ;

Je viens de faire le 1er test que tu proposes :

Set cel = .Find(What:="RELEVE NORMALE", LookIn:=xlValues, lookat:=xlWhole)

Set cel = .Find(What:="INDEX DE DEPART", LookIn:=xlValues, lookat:=xlWhole)

Mais là du coup ca ne me garde plus que les lignes avec "index de départ"

2ème solution que tu me proposes : 2)mettre une cellule en critere de recherche, la macro permets d'enchainer les recherches reste a la lancer en donnant une valeur differente a la cellule(creation d'une liste avec"releve normale" , "index de départ" , "...." )

Ok mais comment fait-on pour mettre une cellule en critère de recherche.....je suis désolé mais j'avance vraiment à petit pas sur les VBA.

@+

Virginie

Mais là du coup ca ne me garde plus que les lignes avec "index de départ"

Normal faut recopier tout le code, pas simplement rajouter une ligne

solution1)

Sub recherche()
Sheets("Données").Activate
lignemax = Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Export").Activate
'**1ere recherche**
With Range("K:K")
    Set cel = .Find(What:="RELEVE NORMALE", LookIn:=xlValues, lookat:=xlWhole)
    If Not cel Is Nothing Then
      Depart = cel.Address
        Do
        'MsgBox cel.Address
        Cells(cel.Row, 11).Copy Worksheets("Données").Range("A" & lignemax) 'type releve
        Cells(cel.Row, 12).Copy
        Worksheets("Données").Range("B" & lignemax).PasteSpecial Paste:=xlPasteValues 'hc
        Cells(cel.Row, 13).Copy
        Worksheets("Données").Range("C" & lignemax).PasteSpecial Paste:=xlPasteValues  'hp
        Cells(cel.Row, 6).Copy Worksheets("Données").Range("D" & lignemax)   'date
        lignemax = lignemax + 1
        Set cel = .FindNext(cel)
        Loop While Depart <> cel.Address
    End If
End With
'**2eme recherche**

With Range("K:K")
    Set cel = .Find(What:="INDEX DE DEPART", LookIn:=xlValues, lookat:=xlWhole)
    If Not cel Is Nothing Then
      Depart = cel.Address
        Do
        'MsgBox cel.Address
        Cells(cel.Row, 11).Copy Worksheets("Données").Range("A" & lignemax) 'type releve
        Cells(cel.Row, 12).Copy
        Worksheets("Données").Range("B" & lignemax).PasteSpecial Paste:=xlPasteValues 'hc
        Cells(cel.Row, 13).Copy
        Worksheets("Données").Range("C" & lignemax).PasteSpecial Paste:=xlPasteValues  'hp
        Cells(cel.Row, 6).Copy Worksheets("Données").Range("D" & lignemax)   'date
        lignemax = lignemax + 1
        Set cel = .FindNext(cel)
        Loop While Depart <> cel.Address
    End If
End With
End Sub

Solution2)

Remplacer juste ca:

Set cel = .Find(What:=Sheets("Feuil1").range("A1"), LookIn:=xlValues, lookat:=xlWhole)

et dans la feuil1,cellule A1 tu crée une liste avec toutes les valeurs que tu peux rechercher.Normalement il mettra les recherches les unes en dessous des autres.

Merci, Merci, Merci Zarik...Ca fonctionne

J'ai opté pour la solution 1 car j'ai eu peur de planter mon fichier car petit à petit j'ai rajouté d'autres macro....

Bouh...j'ai passé près de 3 heures à tester pleins de solutions et en 5mn t'as trouvé...C'est pas juste

Merci encore

@+

Virginie

J'ai opté pour la solution 1

Si tu enchaine les recherches ca va vite devenir lourd...

C'est pas juste

Bon j'ai parlé trop vite Zarik, tu as raison, c'est un peu lourd car j'ai 6 recherches successives mais surtout du coup, ca me les mets dans l'ordre des critères indiqués dans le VBA et non dans l'ordre qu'il les trouve dans le fichier d'origine...

Du coup, je vais me lancer dans ta 2ème solution, Aie Aie Aie

@+

j'ai 6 recherches successives

Aie

Dans ce cas vaut mieux des boucles.

si t'a un fichier ca sera peut etre plus simple.

Oh oui, je veux bien ton aide.

Voici le fichier.

J'ai fait ce que tu m'as dit en créant une liste déroulante sur feuil à part, mais ca ne me remontait que le 1er critère...du coup, j'ai mis les critères de A1 à A6 et dans mon VBA j'ai noté range ("A1:A6") mais pareil ca ne fonctionne pas...

Help !!!!

Rechercher des sujets similaires à "suppression lignes vides"