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

Macros et VBA Excel Discussion :

PB - Enregistrer les différentes valeures d'un compteur?


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable d'exploitation
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable d'exploitation

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut PB - Enregistrer les différentes valeures d'un compteur?
    Bonjour,

    Je vous sollicite car après 2 jours de recherche sur le net, je ne trouve toujours pas de solution a mon problème.

    Je reçois des données que je dois traitées et transformées puis les copier dans d'autres feuilles du classeur.
    Le nombre de lignes et les données varie à chaque nouveau fichier.

    Voici un petit exemple de ce que je reçois :

    NUM_STAND N_SERIE
    001A026 XX
    001A030 180
    001A032 22
    001A035 210
    001A035 320
    001A035 610


    Voici ce que je souhaite obtenir :
    le stand 001A035 apparaît 3 fois avec un numéro de série différent. Je souhaite savoir combien de fois apparaît le nom du stand avec le bon numéro de série a chaque ligne


    Numéro de série;nombre déjà défini 1;nombre déjà défini 2;Numéro du stand;nombre de fois où est apparut le numéro du stand jusqu’à cette ligne
    180;328;5;A030;1
    22;328;5;A032;1
    210;328;5;A035;1
    320;328;5;A035;2
    610;328;5;A035;3


    Mais avec mon code j'obtiens :

    180;328;5;A030;1
    22;328;5;A032;1
    210;328;5;A035;3
    320;328;5;A035;3
    610;328;5;A035;3



    Voici le code que j'utilise pour compter le nombre de fois où est apparut le stand jusqu’à cette ligne mais je n'obtiens pas ce que je souhaite :

    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
     
    Qte = 1
    Numero = 1
     
    [...]
     
    For QteLig = 2 To [A10000].End(xlUp).Row 
                StandComp = (Cells(QteLig, 4).Value)
                NumSerieComp = (Cells(QteLig, 6).Value)
     
                    If Stand = StandComp And NumSerie <> NumSerieComp Then    
                        Numero = Numero + 1                                                            
                    End If
     
     Next QteLig
     
    Sheets("Feuil2").Cells(Lig, 1) = NumSerie & ";" & Salon & ";" & NumHall & ";" & NumStand & ";" & Qte                                                                  
     
                    If Numero = 2 Then
                        Numero2 = 2
                        Sheets("Feuil2").Cells(Lig, 1) = NumSerie & ";" & Salon & ";" & NumHall & ";" & NumStand & ";" & Numero2
                        Sheets("Feuil3").Cells(Lig, 1) = NumSerie & ";" & Salon & ";" & NumHall & ";" & NumStand & ";" & Numero2
     
                    ElseIf Numero = 3 Then
                        Numero3 = 3
                        Sheets("Feuil2").Cells(Lig, 1) = NumSerie & ";" & Salon & ";" & NumHall & ";" & NumStand & ";" & Numero3
                        Sheets("Feuil3").Cells(Lig, 1) = NumSerie & ";" & Salon & ";" & NumHall & ";" & NumStand & ";" & Numero3
     
                   End if
    je ne comprend pas pourquoi il ne garde pas en mémoire le nombre de "numero" ?

    Merci de vos lumières

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Pas besoin de VBA pour faire ça.

    A supposer que tes données sont en colonne A et B de l'onglet "Source" et que les valeurs commencent en ligne 2.
    Dans un autre onglet (ou le même en décalant les colonnes citées),
    tu mets en A2 : =Source!B2.
    tu mets en D2 : =Source!A2.
    tu mets en E2 : =NB.SI(Source!A$2:A2;D2) (attention, le $ est important).

    Tu copies A2:E2 vers le bas autant que nécessaire.

    PS : je n'ai pas compris comment tu obtiens le 328 et le 5.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable d'exploitation
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable d'exploitation

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour Menhir,
    Merci pour ta réactivité et ta réponse.

    En fait je pense être obligé de passer par du VBA. (mais peut être pas?)
    Je reçois un fichier excel tiré d'une extraction d'un plan Autocad.
    Je dois ensuite trier les données et en transformer certaines puis copier les informations situées en feuille 2 dans un fichier txt qui alimentera une base de donnée type SQL. (je ne peux pas modifier cette base de donnée. Je suis donc obligé de passer par ce fichier txt)

    La feuille 3 me sert à vérifier qu'il n'y a pas d'erreur avec les "NUM_STAND" qui apparaissent plusieurs fois.

    Pour répondre a ton P.S,
    le code que j'ai mis ici n'est que la partie qui me pose problème mais le code est plus long.
    J'obtiens le 328 et le 5 avant cette partie de code.
    328 correspond à un numéro de plan et 5 à une zone de ce plan.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/07/2012, 10h58
  2. Trouver les différentes valeurs dans une matrice
    Par cedji dans le forum Images
    Réponses: 3
    Dernier message: 24/02/2012, 18h13
  3. Concaténer les différentes valeurs d'un seul champs
    Par nekro65 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/03/2011, 19h06
  4. [WD-2003] Enregistrer les différents fichiers d'un publipostage
    Par mathieu.c dans le forum Word
    Réponses: 2
    Dernier message: 01/12/2009, 10h38
  5. Parcourir les différentes valeurs d'une énumération
    Par mister3957 dans le forum Général VBA
    Réponses: 4
    Dernier message: 09/03/2008, 09h07

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