Copie lignes contenant ou pas une adresse mail

Hello,

un petite question facile pour vous je pense...

1 - Pourquoi quand je choisis 93100 en cellule G, le choix de la ville ne met pas proposée ?

et une seconde en VBA un peu plus technique

2 - Je voudrais que les lignes contenant une adresse mail en K se copient dans la feuille "Envoi par mail" et celles ne contenant pas d'adresse mail se copient dans la feuille "Envoi par lettre". Les cellules vides doivent restées vides et pas remplacées par des 0 et les formats de cellules respectés aussi. Il ne faut pas de ligne vide non plus

Avec des macros j'y parviens facilement mais je voudrais du vba afin d'éviter les lignes vides qui sont interprétées par le publipostage que je lance derrière...

Merci beaucoup

Akhlan

Bonjour, pour le code postal remplacez de nom de l'évenement :

Private Sub ComboBox1_clic()

par

Private Sub ComboBox1_change()

Problème 1 résolu, merci Xmenpl ;)

J'ai avancé sur mon code et je suis fier de moi :D

Private Sub Worksheet_Activate()

    Dim DerLig, DerLigActive, ligne, i As Integer

    Application.ScreenUpdating = False

    'Compte le nombre de lignes dans les deux feuilles "Clients" et "Envoi par mail"
    DerLig = Worksheets("Clients").Range("A65536").End(xlUp).Row
    DerLigActive = Worksheets("Envoi par mail").Range("A65536").End(xlUp).Row

    'Efface les anciennes valeurs récoltées dans la feuille "Envoi par mail"
    Rows("2:" & DerLigActive).Select
    Selection.Delete Shift:=xlUp

    ligne = 2

    For i = 2 To DerLig
        'si la colonne K contient un mail, copier la ligne dans la feuille "Envoi par mail" à la première ligne vide
        If Worksheets("Clients").Range("K" & i) Like "*@*" Then
        Worksheets("Clients").Range("A" & i & ":S" & i).Copy Worksheets("Envoi par mail").Range("A" & ligne)
        ligne = ligne + 1
        End If
    Next i

End Sub

Donc là ça fonctionne, si une adresse mail reconnue grâce au caractère @ est vu en colonne K, la ligne est copiée dans la feuille "Envoi par mail" mais par contre, je n'arrive pas à appliquer l'inverse.... s'il n'y a pas de @ en colonne K, alors la ligne est à copier dans le feuille "Envoi par courrier"...

Qui peut m'aider pour le second code ?

Qui peut nettoyer ce code qui fonctionne mais qui n'est sans doute (surement pas...) optimisé...

Merci

Bonjour,

J'ai modifié le nom des variables Derligmail et Derligcourrier pour plus de compréhension :

Dim DerLig, DerLigmail, Derligcourrier, i As Integer

    Application.ScreenUpdating = False

    'Compte le nombre de lignes dans les deux feuilles "Clients" et "Envoi par mail"
    DerLig = Worksheets("Clients").Range("A65536").End(xlUp).Row
    DerLigmail = Worksheets("Envoi par mail").Range("A65536").End(xlUp).Row + 1
    Derligcourrier = Worksheets("Envoi par courrier").Range("A65536").End(xlUp).Row + 1

    'Efface les anciennes valeurs récoltées dans la feuille "Envoi par mail"  et par courrier
    Worksheets("Envoi par mail").Select
    Rows("2:" & DerLigmail).Select
    Selection.Delete Shift:=xlUp

    Worksheets("Envoi par courrier").Select
    Rows("2:" & Derligcourrier).Select
    Selection.Delete Shift:=xlUp

For i = 2 To DerLig
        'si la colonne K contient un mail, copier la ligne dans la feuille "Envoi par mail" à la première ligne vide
        If Worksheets("Clients").Range("K" & i) Like "*@*" Then

        Worksheets("Clients").Range("A" & i & ":S" & i).Copy Worksheets("Envoi par mail").Range("A" & Worksheets("Envoi par mail").Range("A65536").End(xlUp).Row + 1)

        'sinon
        Else
        Worksheets("Clients").Range("A" & i & ":S" & i).Copy Worksheets("Envoi par courrier").Range("A" & Worksheets("Envoi par courrier").Range("A65536").End(xlUp).Row + 1)

        End If
    Next i

Merci beaucoup ;)

Rechercher des sujets similaires à "copie lignes contenant pas adresse mail"