Tri de tableau

wampus

XLDnaute Nouveau
Bonjour à tous :)

Jeune débutant en VBA j'ai quelques difficultés pour m'y retrouver dans mes tableaux :confused:

Je viens soliciter votre aide si vous le voulez :eek:

Je vous explique mon problème et vous joint mon fichier.

J'ai un tableaux à 7 colonnes. Dans la colonne E nommé Etat se trouve des cellules contenant de 0 à 4 lettres. Le but étant de trier ce tableau en deux parties grâce aux données de cette colonne.

J'aimerais trier mon tableau comme ceci:

Toutes valeur commençant par AA... ou AN... de la colonne E vont dans le tableau Tableau 1 et toutes le reste dans le Tableau 2.

N'ayant pas réussit a utiliser la concaténation dans ma boucle je me suis amuser a réécrire toutes les valeurs de cette colonne a coté et je compare les éléments à cette colonne pour essayer de les trier.

Mon deuxième problème se trouve au niveau de ma copie des cellules du tableau car je n'arrive pas à prendre toute la ligne contenant les données.

J'ai commenté mon code du mieux que je pouvais. Je suis à l'écoute de tout conseil, proposition.

J'espère que vous pourrez m'aider.

Merci à tous :)
 

Pièces jointes

  • Exemple.xls
    43.5 KB · Affichages: 59
  • Exemple.xls
    43.5 KB · Affichages: 66
  • Exemple.xls
    43.5 KB · Affichages: 57

pierrejean

XLDnaute Barbatruc
Re : Tri de tableau

bonjour wampus

Vois si cela te convient

Code:
Sub Tri()
Dim n As Integer
For n = 5 To Range("B65536").End(xlUp).Row
  If Left(Range("E" & n), 2) = "AA" Then
    Range("B" & n & ":H" & n).Copy Destination:=Range("J65536").End(xlUp).Offset(1, 0)
  Else
    Range("B" & n & ":H" & n).Copy Destination:=Range("R65536").End(xlUp).Offset(1, 0)
  End If
Next n
End Sub
 

Pièces jointes

  • wampus_Exemple.zip
    12.7 KB · Affichages: 28
  • wampus_Exemple.zip
    12.7 KB · Affichages: 34
  • wampus_Exemple.zip
    12.7 KB · Affichages: 32

wampus

XLDnaute Nouveau
Re : Tri de tableau

Waou merci beaucoup pour la réponse très rapide j'essaye de faire ça depuis déjà beaucoup d'heure... ^^

C'est exactement ce que je souhaitais que ça génère sauf que le tableau 1 contient bien les cellules avec les valeurs commençant par AA mais pas par AN.

Mais si j'ai compris j'ai juste à faire quelque chose comme ca :confused:
Sub Tri()
Dim n As Integer
For n = 5 To Range("B65536").End(xlUp).Row
If Left(Range("E" & n), 2) = "AA" Then
Range("B" & n & ":H" & n).Copy Destination:=Range("J65536").End(xlUp).Offset(1, 0)

Else If Left(Range("E" & n), 2) = "AA" Then
Range("B" & n & ":H" & n).Copy Destination:=Range("J65536").End(xlUp).Offset(1, 0)


Else
Range("B" & n & ":H" & n).Copy Destination:=Range("R65536").End(xlUp).Offset(1, 0)
End If
Next n
End Sub
 

youky(BJ)

XLDnaute Barbatruc
Re : Tri de tableau

Bonjour à vous et à pierrejean de Limas,
J'ai seulement rajouté le "AN" manquant
Sub Tri()
Dim n As Integer
For n = 5 To Range("B65536").End(xlUp).Row
If Left(Range("E" & n), 2) = "AA" Or Left(Range("E" & n), 2) = "AN" Then
Range("B" & n & ":H" & n).Copy Destination:=Range("J65536").End(xlUp).Offset(1, 0)
Else
Range("B" & n & ":H" & n).Copy Destination:=Range("R65536").End(xlUp).Offset(1, 0)
End If
Next n
End Sub
 

Cousinhub

XLDnaute Barbatruc
Re : Tri de tableau

Bonsoir wampus,

Pierrejean :):)

Bonsoir, Youki(BJ)

une autre solution...

Code:
Sub tri()
Dim Derlig As Long
Derlig = [B65000].End(xlUp).Row
Range("B4:H" & Derlig).Name = "base"
Range("I5").FormulaR1C1 = "=OR(LEFT(RC5,2)=""AA"",LEFT(RC5,2)=""AN"")"
Range("Q5").FormulaR1C1 = "=AND(LEFT(RC5,2)<>""AA"",LEFT(RC5,2)<>""AN"")"
Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
    "I4:I5"), CopyToRange:=Range("J4:P4"), Unique:=False
Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
    "Q4:Q5"), CopyToRange:=Range("R4:X4"), Unique:=False
Union(Range("I5"), Range("Q5")).Clear
End Sub
 

wampus

XLDnaute Nouveau
Re : Tri de tableau

Super merci pour vos réponses :)

J'avais une autre petite question j'ai fais une macro pour importer un tableau d'un autre fichier excel et qui demande à l'utilisateur de choisir le fichier source en ayant une fenetre ouverture de fichier. Tout fonctionne sauf quand je clique sur Annuler. La ca me lance une popup erreur debogage ...

Voici mon code en gros :

fileToOpen = Application.GetOpenFilenam
Workbooks.OpenText Filename:=fileToOpen
Dim nomFichier As String
nomFichier = Filename

Et je voulais savoir si vous pouviez me donner une petite piste pour faire la même chose que le code pour trier mes tableaux mais que ca envois le résultat sur une autre feuille ?

Merci de m'avoir aidé .
 

youky(BJ)

XLDnaute Barbatruc
Re : Tri de tableau

Re bonsoir,

le click sur "Annuler"

fileToOpen = Application.GetOpenFilename
On Error Resume Next
Workbooks.OpenText Filename:=fileToOpen
If Err > 0 Then Exit Sub 'ou traiter
Dim nomFichier As String
nomFichier = Filename
 

wampus

XLDnaute Nouveau
Re : Tri de tableau

Merci Youky,

les deux méthodes fonctionnent mais je ne comprends pas pourquoi, quand je clique sur Annuler ça lance une fenêtre voulez-vous enregistrer les modifications apporté a ....

Et quand je clique sur Annuler de cette fenêtre il me lance un message d'erreur à nouveaux.

Alors je pense que cela doit venir du faite que je créé des cellules avec des données dedans comme la date avant d'ouvrir un fenêtre pour ouvrir un fichier du coup il me demande si je veux sauvegarder...

Existe t il un moyen de stopper la macro en même temps que l'on clique sur Annuler et que cela ne quitte pas l'appli ?

Merci encore.
 

Statistiques des forums

Discussions
312 747
Messages
2 091 605
Membres
105 007
dernier inscrit
adla