[Exel] A la recherche de deux macros

Fermé
nono33 - 16 oct. 2009 à 11:41
 nono33 - 19 oct. 2009 à 14:11
Bonjour, je suis actuellement en stage en entreprise en angleterre et mon maitre de stage m'a charge (desole pour les accents que je n'ai pas) d'etablir un fichier excel nous permettant un tri plus rapide et automatique de nos donnees.

N'etant pas de formation informatique mais de commerce mes connaissances en macro sont proches de 0, je sais les enregistrer mais apres.... Je m'en remet donc a votre savoir. Voici les deux macros que je pense me seraient utiles: /!\ Je suis sur excel 07 version anglaise donc si vous connaisez les fonctions anglaises je vous serait eternelement reconnaissant mais en francais je serais deja fort content =)

1) Une premiere macro qui cherchera (et supprimera la ligne entiere) dans la premiere colonne toutes les cellules dans lesquelles apparait le mot "done" ou le mot "ok" mais malheuresement ce fragment de texte sera generalement precede et suivi de texte (ca aurait ete trop simple je vous l'accorde...) Exemple en A2: chairdonetosend (improvisation totale).
Je sais comment creer un macro supprimant une ligne ne content qu'un mot cle mais aucune idee quand ce mot n'est pas seul.

2) La seconde macro j'ai pas mal cherche sur internet car je pense que ce probleme a deja du se poser, je m'en suis donc rendu a utiliser le site XL qui permet de trouver les entrees uniques en comparant deux documents excel.

Personnelement je voudrais juste pouvoir comparer deux colonnes
Colonne 1= une liste de references dont nous ne savons encore rien
Colonne 2= les references que nous savons deja mauvaise
La colonne 2 a pour l'instant pres de 2000 entree et en general la premiere une 100aine. L'objectif de la macro serait de supprimer automatiquement les lignes des references de la premiere colonne deja exsistante dans la 2eme (je me fiche de ce qu'il advient de la seconde colonne ensuite, oui je suis mechant :/).

En gros je voudrais si dieu le veux (et si vous me le permettez) avoir une liste qui supprime les entrees inutiles ou deja connues automatiquement pour avoir ensuite a traiter les restantes a la main.

Je vous remercie d'avance si vous vous penchez sur mon probleme qui n'est surement pas une mince affaire.
Cordialement, Arnaud.

3 réponses

Mike-31 Messages postés 18379 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 mars 2025 5 125
17 oct. 2009 à 15:01
Salut,

Il semblerait que nono33, ai abandonné, pour répondre aux deux questions posées qui peuvent intéresser
Le code proposé par lami20j complété pour traiter les ok

Sub suppr_lignes_condition_cellule()
Dim lg As Long, r As Long
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
lg = .Row + .Rows.Count - 1
End With
For r = lg To 1 Step -1
If Cells(r, 1) Like "*done*" Then ' cellule de la colone 1
Rows(r).Delete
End If
If Cells(r, 1) Like "*ok*" Then ' cellule de la colone 1
Rows(r).Delete
End If
Next r
Application.ScreenUpdating = True
End Sub

Le code pour la deuxième question, avec plus d'infos, il serait possible de l'écrire différemment ou supprimer des lignes

Sub test1()
'compare deuc colonnes sur la même feuille
Dim Plage As Range, c As Range, Ligne As Long
Set Plage = Range("A2", Range("A65536").End(xlUp))
Ligne = 1
For Each c In Plage
If WorksheetFunction.CountIf(Range("B:B"), c.Value) > 0 Then
'c.ClearContents 'efface la valeur en A qui figure en B
c.EntireRow.Delete 'supprime la ligne du doublon B trouvée en A
'Range("C" & Ligne).Value = c.Value 'recopie en C la valeur qui est en A et B
Ligne = Ligne + 1
End If
Next c
End Sub
'ou
Sub test2()
'Compare deux colonnes de deux feuilles
Dim Plage As Range, c As Range, Ligne As Long
Set Plage = Sheets("Feuil1").Range("A2", Range("A65536").End(xlUp))
Ligne = 1
For Each c In Plage
If WorksheetFunction.CountIf(Sheets("Feuil2").Range("B:B"), c.Value) > 0 Then
c.EntireRow.Delete 'supprime la ligne du doublon B trouvée en A
'Range("C" & Ligne).Value = c.Value 'recopie en C la valeur qui est en A et B
Ligne = Ligne + 1
End If
Next c
End Sub

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
1
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
16 oct. 2009 à 17:35
Salut,

Pour macro 1
Source
https://forums.commentcamarche.net/forum/affich-12024751-macro-excel-suppression-lignes#3
https://forums.commentcamarche.net/forum/affich-2084139-vba-fonction-equivalente-a-commence-par-qu#3

Ca donne (je n'ai pas testé)

Sub suppr_lignes_condition_cellule()
    Dim lg as Long, r as Long
    Application.ScreenUpdating = False
    With ActiveSheet.UsedRange
        lg = .Row + .Rows.Count - 1
    End With

    For r = lg To 1 Step -1
        If Cells(r, 1)  Like "*done*" Then ' cellule de la colone 1
            Rows(r).Delete
        End If
    Next r
    Application.ScreenUpdating = True
End Sub

0
Et bien merci beaucoup pour vos reponses si rapides.
Je m'escuse du retard de ma reponse mais je n'ai pas internet en dehors du travail (la vie est dure parfois :/). A vrai dire je pensais pouvoir attendre une bonne semaine avec ma demande si floue.

Tout marche a merveille apparement, mon probleme est resolu et je vous en remercie encore. :)
0