Macro liste et tri

thri

XLDnaute Junior
Bonjour à tous,
Voilà j'ai une macro qui fonctionne très bien pour insérer une nouvelle donnée saisie dans b5 liste de validation dans la feuille "article", elle fonctionne sur une cellule est ce possible de modifier la macro pour qu'elle fonctionne sur une plage.Le fichier est plus explicite.
Merci de vos réponse
 

Pièces jointes

  • Macro_liste.zip
    9.9 KB · Affichages: 40
  • Macro_liste.zip
    9.9 KB · Affichages: 47
  • Macro_liste.zip
    9.9 KB · Affichages: 44

ledzepfred

XLDnaute Impliqué
Re : Macro liste et tri

bonsoir thri,

ci-dessous ta macro modifiée, qui s'appuie sur une plage nommée maplage que j'ai ajouté dans le fichier

A+

Code:
Sub ajout_article()
'
' ajout_client Macro
' Macro enregistrée le 16/12/2006 par Mourmant
'

Application.ScreenUpdating = False
For Each cellule In Range("maplage")
    With Sheets("Clients")
        .Activate
        Set c = .Range("Article").Find(cellule)
            If c Is Nothing Then
                .Rows("2:2").Insert Shift:=xlDown
                .[A2] = cellule
                .Columns("A:A").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
                OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                DataOption1:=xlSortNormal
            End If
    End With
    Sheets("nouveau").Activate
Next cellule
End Sub
 

Pièces jointes

  • Macro_liste.zip
    10.5 KB · Affichages: 42
  • Macro_liste.zip
    10.5 KB · Affichages: 41
  • Macro_liste.zip
    10.5 KB · Affichages: 42
Dernière édition:

thri

XLDnaute Junior
Re : Macro liste et tri

Rebonsoir,
Petit problème si je marque "tom" dans la liste déroulante, la valeur n'est pas prise en compte, je pense que tom et les trois premières lettres de tomate et que la macro ne l'a pas prise en compte dans la liste article.
Merci d'avance
 

ledzepfred

XLDnaute Impliqué
Re : Macro liste et tri

Re,

je n'avais pas envisagé ce cas (la rouille des vacances), je te propose un petit ajout (en rouge dans le code) qui règle le problème :

Code:
Sub ajout_article()
'
' ajout_client Macro
' Macro enregistrée le 16/12/2006 par Mourmant
'

Application.ScreenUpdating = False
For Each cellule In Range("maplage")
    With Sheets("Clients")
        .Activate
        Set c = .Range("Article").Find(cellule[COLOR="Red"], LookAt:=xlWhole[/COLOR])
            If c Is Nothing Then
                .Rows("2:2").Insert Shift:=xlDown
                .[A2] = cellule
                .[Article].Sort Key1:=.[A2], Order1:=xlAscending
            End If
    End With
    Sheets("nouveau").Activate
Next cellule
End Sub

ou avec une autre méthode (countif):

Code:
Sub ajout_article()
'
' ajout_client Macro
' Macro enregistrée le 16/12/2006 par Mourmant
'

Application.ScreenUpdating = False
For Each Cellule In Range("maplage")
    With Sheets("Clients")
        .Activate
        x = Application.WorksheetFunction.CountIf(.[Article], Cellule)
            If x = 0 Then
                .Rows("2:2").Insert Shift:=xlDown
                .[A2] = Cellule
                .[Article].Sort Key1:=.[A2], Order1:=xlAscending
            End If
    End With
    Sheets("nouveau").Activate
Next Cellule
End Sub
A+
 
Dernière édition:

thri

XLDnaute Junior
Re : Macro liste et tri

Bonjour,
Ledzepfred m'a modifiié la macro, elle fonctionne très bien mais si dans "maplage" il y a des 0 ou des cellules vides, une ligne vide et un zéro s'insèrent dans la liste article de la feuille clients.
Y a-t-il un moyen en modifiant la macro d'empêcher d'insérer dans la feuille client une ligne vide sans valeur et une ligne avec un zéro qui renvoie une liaison d'une cellule vide.

Je peux avoir des cellule vide dans ma liste de saisie de validation entre les données.
Merci d'avance de votre aide.
 

Pièces jointes

  • Macro_liste_2.zip
    14.3 KB · Affichages: 33

ledzepfred

XLDnaute Impliqué
Re : Macro liste et tri

Bonjour thri,

on va y arriver, essayes ceci (en rouge les ajouts dans le code)
Code:
Sub ajout_article()
'
' ajout_client Macro
' Macro enregistrée le 16/12/2006 par Mourmant
'

Application.ScreenUpdating = False
For Each cellule In Range("maplage")
   [COLOR="Red"] If IsEmpty(cellule) = False And cellule <> 0 Then[/COLOR]
        With Sheets("Clients")
            .Activate
            Set c = .Range("Article").Find(cellule, LookAt:=xlWhole)
                If c Is Nothing Then
                    .Rows("2:2").Insert Shift:=xlDown
                    .[A2] = cellule
                    .[Article].Sort Key1:=.[A2], Order1:=xlAscending
                End If
        End With
        Sheets("nouveau").Activate
    [COLOR="red"]End If[/COLOR]
Next cellule
End Sub
Idem pour l'autre méthode :
Code:
Sub ajout_article_b()
'
' ajout_client Macro
' Macro enregistrée le 16/12/2006 par Mourmant
'

Application.ScreenUpdating = False
For Each cellule In Range("maplage")
   [COLOR="red"] If IsEmpty(cellule) = False And cellule <> 0 Then[/COLOR]        
        With Sheets("Clients")
            .Activate
            x = Application.WorksheetFunction.CountIf(.[Article], cellule)
                If x = 0 Then
                    .Rows("2:2").Insert Shift:=xlDown
                    .[A2] = cellule
                    .[Article].Sort Key1:=.[A2], Order1:=xlAscending
                End If
        End With
        Sheets("nouveau").Activate
  [COLOR="red"]  End If[/COLOR]
Next cellule
End Sub

A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 418
Membres
103 205
dernier inscrit
zch