IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Additionner une plage de cellules contenant des caractères numériques et alphanumériques


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Mai 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Additionner une plage de cellules contenant des caractères numériques et alphanumériques
    Bonjour à tous,

    Je me penche depuis un certain temps sur un problème excel que je n'arrive pas à résoudre.
    Il s'agit, à partir de la plage de cellule si dessous, d'additionner les chiffres contenus entre la chaine de caractère "A/"
    et "\". Si une cellule ne possède pas ces chaines de caractères, il faut additionner par 0

    Je dois absolument trouver une solution sans créer de nouvelles colonnes et sans faire intervenir de VBA.
    Je persiste à dire que c'est possible mais après quelques heures de recherche, je n'y arrive toujours pas.
    Je pense tout de même avoir trouver un début de solution (cas n°1 dans le fichier excel ci-joint), mais c'est loin de résoudre
    entièrement le problème. En avançant par étape (cas n°1 => cas n°2 => cas n°3), je pense qu'on pourrait y arriver plus facilement.

    Je remercie par avance celui qui trouvera la solution.

    Ligne Colonne A
    1 AA/100\M/50\
    2 AA/150\M/100\
    3 AAA/250\
    4 AA/200\M/20\
    5 M/90\AA/100\
    6 M/50\
    7 AAA/400\M/70\
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Formule matricielle (valider avec Ctrl+Maj+Entrée) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME(SIERREUR(CNUM(STXT($A$4:$A$10;TROUVE("A/";$A$4:$A$10)+2;TROUVE("\";SI(TROUVE("A/";$A$4:$A$10)>0;STXT($A$4:$A$10;TROUVE("A/";$A$4:$A$10)+2;9^9);0))-1));0))
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Bien que hors sujet car la réponse doit être sans VBA, une solution consiste à mettre une fonction dans une macro complémentaire.

    Ici la macro complémentaire s'appelle Marketing.xlam
    Nb : Les macro-complémentaires peuvent être mises n'importe où, mais il est plus prudent de les installer dans C:\Users\VotreUser\AppData\Roaming\Microsoft\AddIns


    La fonction s'appelle SommeEntreSlashEtAntiSlash

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    Function SommeEntreSlashEtAntiSlash(AireEtudiee As Range, CaracteresDebut As String, CaractereFin As String)
     
    ' © Eric KERGRESSE EIRL
     
    Dim Cellule As Range
    Dim I As Integer
    Dim PositionASlash As Integer
    Dim PositionAntiSlash As Integer
     
     
    SommeEntreSlashEtAntiSlash = 0
     
    For Each Cellule In AireEtudiee
     
      PositionASlash = 0
      ' Contrôle présence A/
      For I = 1 To Len(Cellule)
        If Mid(Cellule, I, 2) = CaracteresDebut Then PositionASlash = I
      Next I
     
      ' Contrôle présence \
      PositionAntiSlash = 0
      If PositionASlash > 0 Then
     
          If PositionASlash + 2 <= Len(Cellule) Then
             For I = PositionASlash + 2 To Len(Cellule)
                    If Mid(Cellule, I, 1) = CaractereFin Then
                      PositionAntiSlash = I
                      Exit For
                    End If
            Next I
          End If
     
      End If
     
      Select Case PositionAntiSlash
        Case 0
            SommeEntreSlashEtAntiSlash = SommeEntreSlashEtAntiSlash + Val(Mid(Cellule, PositionASlash + 2))
          '  MsgBox (Val(Mid(Cellule, PositionASlash + 2)))
        Case Else
     
             SommeEntreSlashEtAntiSlash = SommeEntreSlashEtAntiSlash + Val(Mid(Cellule, PositionASlash + 2, PositionAntiSlash - (PositionASlash + 2)))
          '   MsgBox (Val(Mid(Cellule, PositionASlash + 2, PositionAntiSlash - (PositionASlash + 2))))
      End Select
     
    Next Cellule
     
     
    End Function
    Dès lors que la macro complémentaire est présente dans le menu Compléments d'Excel, la fonction peut-être utilisée dans un fichier .xlsx

    Exemple dans le fichier joint Question modifié EK pour les trois cas proposés.



  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Mai 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup, c'est exactement ce que je cherchais !

Discussions similaires

  1. Sélectionner des caractères d'une plage de cellules
    Par AsmaaSmile25 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/01/2015, 18h35
  2. [MySQL] Trier avec les chaines contenant des caractères numériques
    Par DezMax dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 31/05/2013, 19h58
  3. Réponses: 3
    Dernier message: 06/04/2012, 14h31
  4. [Toutes versions] Identifier les cellules contenant des caractères numériques
    Par Runsh63 dans le forum Excel
    Réponses: 4
    Dernier message: 17/03/2011, 16h44
  5. Réponses: 1
    Dernier message: 22/01/2007, 20h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo