Eliminer répitition valeur dans cellule VBA
Fermé
pickwé
-
4 mai 2011 à 11:13
Normad Messages postés 112 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 - 20 mai 2013 à 13:03
Normad Messages postés 112 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 - 20 mai 2013 à 13:03
A voir également:
- Eliminer répitition valeur dans cellule VBA
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Excel compter cellule couleur sans vba - Guide
- Verrouiller cellule excel - Guide
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? - Forum VB / VBA
1 réponse
Normad
Messages postés
112
Date d'inscription
dimanche 6 juin 2010
Statut
Membre
Dernière intervention
10 juin 2015
39
20 mai 2013 à 13:03
20 mai 2013 à 13:03
Oui, ce n'est pas super-simple (plus de 2 heures...)
Avec les données dans les colonnes A et B de Feuil1 :
Avec les données dans les colonnes A et B de Feuil1 :
Sub Traitement() Dim TableauB() As String, ValeurA As String, I As Integer, Y As Integer, Z As Integer, Ligne As Long Ligne = 1 For I = 1 To Sheets("Feuil1").Range("A1").End(xlDown).Row ValeurA = TableauValeurs(Sheets("Feuil1").Range("A" & I).Value, True) TableauB = TableauValeurs(Sheets("Feuil1").Range("B" & I).Value) Z = 1 For Y = Ligne To UBound(TableauB) + Ligne - 1 Sheets("Feuil1").Range("C" & Y).Value = ValeurA Sheets("Feuil1").Range("D" & Y).Value = TableauB(Z) Z = Z + 1 Next Y Ligne = Y Next I End Sub Function TableauValeurs(strTest As String, Optional A As Boolean) Dim Y As Integer, I As Integer, Decomp() As String, Test As String Test = strTest Y = InStr(1, Test, ";") While Y > 0 I = I + 1 ReDim Preserve Decomp(I) Decomp(I) = Left(Test, Y - 1) If A Then GoTo Val1 Test = Mid(Test, Y + 1) Y = InStr(1, Test, ";") Wend I = I + 1 ReDim Preserve Decomp(I) Decomp(I) = Mid(Test, Y + 1) TableauValeurs = SupprDoublons(Decomp) Exit Function Val1: TableauValeurs = Decomp(1) End Function Function SupprDoublons(Tableau) Dim I As Integer, Y As Integer, NewTab() As String, Cpte As Integer, Ajoute As Boolean If Not IsArray(Tableau) Then SupprDoublons = Tableau Exit Function End If For I = 1 To UBound(Tableau) For Y = 1 To IIf(TailleTab(NewTab) = 0, 1, Cpte) If TailleTab(NewTab) = 0 Then Ajoute = True Else If Tableau(I) <> NewTab(Y) Then Ajoute = True Else Ajoute = False End If End If Next Y If Ajoute Then Cpte = Cpte + 1 ReDim Preserve NewTab(Cpte) NewTab(Cpte) = Tableau(I) End If Next I SupprDoublons = NewTab End Function Private Function TailleTab(Tableau() As String) As Integer On Error GoTo vide TailleTab = UBound(Tableau) Exit Function vide: TailleTab = 0 End Function