VBA : copier sous condition

Zaffe

XLDnaute Nouveau
Bonjour à tous,

Mon problème est tout simple mais je n'arrive pas a trouver de solution.
J'aimerais que dans la feuille 3 apparaissent le nom des villes de la feuille 1 et 2 sachant que des villes sont à la fois dans la feuille 1 et la feuille 2 mais ne doivent apparaitre qu'une fois.

J'ai en réalité 4 onglets de 65000 lignes avec 70% de doublon, je voudrais donc faire ressortir une liste des quatres onglets sans doublon.

Je travaille sur du VBA mais étant débutant ... j'ai pas réussi à trouver de solution. :'(
 

Pièces jointes

  • ex.xls
    18.5 KB · Affichages: 68
  • ex.xls
    18.5 KB · Affichages: 70
  • ex.xls
    18.5 KB · Affichages: 69

Efgé

XLDnaute Barbatruc
Re : VBA : copier sous condition

Bonjour Zaffe,
Une proposition sur la base d'un code de Boisgontier.
Toutes les villes des deux feuilles, triées et sans doublons sur la troisième.
Attention Toulouse apparait deux fois car une saisie "Toulouse" et une saisie "Toulouse ".
Cordialement
 

Pièces jointes

  • ex(2).xls
    33 KB · Affichages: 83
  • ex(2).xls
    33 KB · Affichages: 83
  • ex(2).xls
    33 KB · Affichages: 86

Efgé

XLDnaute Barbatruc
Re : VBA : copier sous condition

Re
Une modif (Vous ne deviez pas avoir la première ville) + la liste s'inscrit bien à partir de la ligne 6.
Cordialement
 

Pièces jointes

  • ex(3).xls
    33.5 KB · Affichages: 87
  • ex(3).xls
    33.5 KB · Affichages: 84
  • ex(3).xls
    33.5 KB · Affichages: 86

Zaffe

XLDnaute Nouveau
Re : VBA : copier sous condition

Je vais peux être dire une grosse connerie mais qui dois montrer mon niveau en VBA... C'est quoi la différence entre un module et le code dans une feuille ?

Ca marche ! Merci beaucoup, ca me soulage, j'étais au bord de la crise de nerf ...
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : VBA : copier sous condition

Re Zaffe,
Ce n'est pas une C_ _ _ _ _ _ e.
Un Module renferme une macro utilisable depuis toutes les feuilles.
Le code de la feuille est généralement utilisé pour les macros qui ne concernent que la feuille qui les contient.
Cordialement
 

Zaffe

XLDnaute Nouveau
Re : VBA : copier sous condition

Re Zaffe,
Ce n'est pas une C_ _ _ _ _ _ e.
Un Module renferme une macro utilisable depuis toutes les feuilles.
Le code de la feuille est généralement utilisé pour les macros qui ne concernent que la feuille qui les contient.
Cordialement

Je m'en doutais... c'était logique finalement.Faut-il faire appel au code qui se trouve dans un module ou il s'effectue automatiquement.
J'ai commencer le VBA il y a un mois, je dois apprendre par moi même mais on me demande de faire des actions que je suis incapable de faire par contre du coup petit à petit j'arrive à faire des actions simples...

En tout cas merci beaucoup pour ton aide
 

Efgé

XLDnaute Barbatruc
Re : VBA : copier sous condition

Re
Pour lancer directement un code dans un module, en général on utilise un bouton (voir mon dernier fichier).
Si c'est nécessaire on peut aussis activer le code à l'affichage de la feuille par exemple, mais là on mettra le code dans le "code de la feuille" et on utiliser en début de macro :
Code:
Private Sub Worksheet_Activate()
A la place de
Code:
Sub Test()
Tout dépend de l'utilisation qui en sera faite.
Donne plus d'explications et il y aura surement quelqu'un pour t'aiguiller.
Cordialement
 

Zaffe

XLDnaute Nouveau
Re : VBA : copier sous condition

Oui on m'a déjà aider plusieurs fois, sans le forum ... je sais pas ou j'en serais lol. J'essaye à chaque fois de chercher par moi même, puis de donner un exemple basique que se rapproche du mien pour que ca ne vous prenne pas trop de temps et que ca m'oblige à l'adapter et donc comprendre au moins une partie du code à l'intérieur.

Encore merci
 

Zaffe

XLDnaute Nouveau
Re : VBA : copier sous condition

Une seconde question comment faire pour copier une plage de donnée avec ce code :

Private Sub maj_Click()
Dim ShtTrav As Worksheet
Dim FeuillesSource As Variant
Dim CptFeuil As Byte

FeuillesSource = Array("P1-09", "P2-09", "P3-09", "P4-09")

Range("A5:J" & Range("J5").End(xlDown).Row).ClearContents

Set ShtTrav = ThisWorkbook.Sheets.Add

For CptFeuil = 0 To UBound(FeuillesSource)
With Sheets(FeuillesSource(CptFeuil))
.Range("E6:J" & .Range("J65536").End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ShtTrav.Range("A" & ShtTrav.Range("A65536").End(xlUp).Row + 1), Unique:=True
End With
Next CptFeuil

ShtTrav.Range("A2:A" & ShtTrav.Range("A65536").End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("A5"), Unique:=True

Application.DisplayAlerts = False
ShtTrav.Delete
Application.DisplayAlerts = True
Set ShtTrav = Nothing
End Sub


Sachant qu'il ne doit supprimer les doublon que sur la colonne 1
 
Dernière édition:

Minick

XLDnaute Impliqué
Re : VBA : copier sous condition

Salut,

A verifier:
Code:
Option Explicit

Private Sub CommandButton1_Click()
    Dim ShtTrav As Worksheet
    Dim FeuillesSource As Variant
    Dim CptFeuil As Byte
    
    FeuillesSource = Array("P1-09", "P2-09", "P3-09", "P4-09")
    
    Range("A5:F" & Range("A5").End(xlDown).Row).ClearContents
    
    Set ShtTrav = ThisWorkbook.Sheets.Add
    
    For CptFeuil = 0 To UBound(FeuillesSource)
        With Sheets(FeuillesSource(CptFeuil))
           .Range("E6:J" & .Range("E65536").End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ShtTrav.Range("A" & ShtTrav.Range("A65536").End(xlUp).Row + 1), Unique:=True
        End With
    Next CptFeuil
    
    ShtTrav.Range("A2:F" & ShtTrav.Range("A65536").End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("A5"), Unique:=True
    
    Application.DisplayAlerts = False
    ShtTrav.Delete
    Application.DisplayAlerts = True
    Set ShtTrav = Nothing
End Sub
 

Zaffe

XLDnaute Nouveau
Re : VBA : copier sous condition

Merci beaucoup, j'avais finalement trouvé une solution mais elle me rajoutait des lignes vides au fur et à mesure des mises à jour.

Je profite du post pour poser une question VBA qui n'a rien à voir, quelqu'un sait comment récuperer la valeur d'un label pour l'inserer dans un textbox qui se trouve dans un userform :eek:
 

Efgé

XLDnaute Barbatruc
Re : VBA : copier sous condition

Bonjour à tous,
Zaffe, il est préférable d'appliquer la règle : Nouvelle question = Nouveau Fil, si non ce fil va faire 1 000 pages pour 200 questions et personne ne s'y retrouvera plus (en particulier lors de recherches sur le forum).
Pensez y :).
Cordialement
 

Discussions similaires

Réponses
4
Affichages
192

Statistiques des forums

Discussions
312 248
Messages
2 086 594
Membres
103 250
dernier inscrit
keks974