Detailler une cellule Texte et nombre

  • Initiateur de la discussion Initiateur de la discussion SSIAP2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

SSIAP2

XLDnaute Occasionnel
Bonsoir à tous

sa fais quelque heures que j'ecume le forum à la recherche d'une soltution à mon probleme.

J'ai une colonne A nommer origine dans chacune de mes cellules en A j'ai des particularité formater comme ceci

1 APE - 10 APX - 3 UPE
1 APV - 14 APX - 3 UPE

Je cherche une formule ou une macro pour que en collone E s'affiche les détail et en collone F le nombre Total

exemple

En E En F
APE 1
APX 24
UPE 6
APV 1

à savoir que de nouvelle particularité peuvent s'ajouter

je vous est mis un exemple de fichier

pouvez vous m'aider à regler ce probleme je vous en remercie d'avance
 

Pièces jointes

Re : Detailler une cellule Texte et nombre

Bonsour®

  • inserer 2 colonnes avant la colonne E
  • selectionner la colonne A
    Menu Données Convertir
    Delimité : espace et -
    compter les séparateurs consecutifs comme unique​
  • dans le tableau recap
    en regard de APX :
    la formule​
Code:
=SOMME.SI($B$1:$B$50;"APX";$A$1:$A$50)+SOMME.SI($D$1:$D$50;"APX";$C$1:$C$50)+SOMME.SI($F$1:$F$50;"APX";$E$1:$E$50)

faire de même pour "APU", etc...

remplacer éventuellement 50 par le nombre de lignes de données
on peut plus remplacer "APX" par l'adresse de la cellule ou se trouve ce texte
la formule peut alors etre recopiée vers le bas autant de fois qu'ily a de "Textes" différrents.
 
Re : Detailler une cellule Texte et nombre

Bonsoir SSIAP2,

Voyez le fichier joint et cette macro :

Code:
Sub Compter()
Dim cel As Range, t$, s, i&, tablo(), n&, j&
'---création du tableau---
For Each cel In Range("A2", [A65536].End(xlUp))
  t = Application.Trim(cel)
  If t <> "" Then
    s = Split(t)
    For i = 0 To UBound(s)
      If IsNumeric(s(i)) Then
        ReDim Preserve tablo(1, n)
        tablo(1, n) = s(i): tablo(0, n) = s(i + 1)
        n = n + 1
      End If
    Next
  End If
Next
'---analyse du tableau et sommes---
For i = 0 To UBound(tablo, 2) - 1
  If tablo(0, i) <> "" Then
    For j = i + 1 To UBound(tablo, 2)
      If tablo(0, i) = tablo(0, j) Then
        tablo(1, i) = CDbl(tablo(1, i)) + CDbl(tablo(1, j))
        tablo(0, j) = "": tablo(1, j) = ""
      End If
    Next
  End If
Next
'---restitution---
Application.ScreenUpdating = False
On Error Resume Next 'si pas de cellules vides
[E3:F65536].ClearContents
If n Then
  [E3:F3].Resize(n) = Application.Transpose(tablo)
  'suppression des cellules vides
  '[E3:F3].Resize(n).SpecialCells(xlCellTypeBlanks).Delete xlUp
End If
End Sub
Edit : bonsoir Modeste geedee

A+
 

Pièces jointes

Dernière édition:
Re : Detailler une cellule Texte et nombre

Bonsoir @ tous,
Une intervention par formule si vous permettez :
Tu selectionnes les cellules :
- Donnees ==> Convertir
- Cocher ==> Delimiter , et cliquer sur Suivant.
- Cocher ==> Espace et Autre, et mets un - dans la case devant Autre, puis cliquer sur Terminer.
tes donnees vont etre mises dans les colonnes A a F selon le nombre des donnees que tu as dans chaque cellule.
Tu nommes la plage resultante : Zone comme j'ai fait sur les fichier.
et serts toi de mes formules.
Formules valables quelque soit la hauteur et la largeur de la Zone.
Voir PJ.
Combien de "likes" meritent-elles ???
Amicalement

Edit : Modif. PJ.
 

Pièces jointes

Dernière édition:
Re : Detailler une cellule Texte et nombre

Bonjour,


Code:
Sub essai()
  Set d = CreateObject("scripting.dictionary")
  For Each c In Range("A2:A" & [A65000].End(xlUp).Row)
    a = Split(c, "-")
    For Each i In a
       b = Split(Trim(i), " ")
       d(b(1)) = d(b(1)) + Val(b(0))
    Next i
  Next c
  [f2].Resize(d.Count) = Application.Transpose(d.keys)
  [g2].Resize(d.Count) = Application.Transpose(d.items)
End Sub

JB
Formation Excel VBA JB
 

Pièces jointes

Re : Detailler une cellule Texte et nombre

Bonjour Rachid, Jacques,

Merci JB.

Y a pas photo, toujours penser à "Dictionary" quand il y a des doublons.

Testé sur 20000 lignes (XP/Excel 2003) :

- macro du post #5 => 1,43 s

- macro du post #7 => 0,51 s

A+
 
Re : Detailler une cellule Texte et nombre

Version un peu + rapide

Code:
Sub essai2()
  Set d = CreateObject("scripting.dictionary")
  tbl = Range("A2:A" & [A65000].End(xlUp).Row)
  For Each c In tbl
    a = Split(c, "-")
    For Each i In a
       b = Split(Trim(i), " ")
       d(b(1)) = d(b(1)) + Val(b(0))
    Next i
  Next c
  [f2].Resize(d.Count) = Application.Transpose(d.keys)
  [g2].Resize(d.Count) = Application.Transpose(d.items)
End Sub

>Y a pas photo, toujours penser à "Dictionary" quand il y a des doublons.

Pas seulement quand il y des doublons. L'accès à une clé d'un dictionnaire est 100 fois + rapide qu'une recherche séquentielle dans un tableau (l'accès aux clés d'un dictionnaire doit se faire par hash-code)

Comparaison recherche tableau/dictionary

JB
 
Dernière édition:
Re : Detailler une cellule Texte et nombre

Bonjour @ tous,
Bonjour mon cher Modeste,
Ahhhhhh, mais je parle de formule pas du VBA, car en VBA on peut tout faire pas besoin de formules.
Pour les couleurs peut etre j'ai dit sans VBA, et la solutio presente est toujours en VBA...
Amicalement
 
Re : Detailler une cellule Texte et nombre

Bonsoir rachid
bonsoir Job45
bonsoir boisgontier
et bonsoir modeste

Que dire à part que c'est génial vous avez vraiment un trés gros niveau en la matiere j'ai put tester toute vos propositions c'etait le moins que je puisse faire tous remplies le cahier des charges il me reste plus à l'integrer dans ma macro je pense opter pour la solution de boisgontier et de job75 je vous tiens informer quand tous les teste seront terminer mais sa semble déja parfais un grand merci à tous et à trés bientot
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
118
Retour