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 :

Boucle do loop while qui ne fonctionne pas


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Boucle do loop while qui ne fonctionne pas
    Bonjour à tous,

    Je viens trouver une solution à mon problème
    Voilà la problématique: le titre "PT email" correspond à une campagne.
    Tout ce qui commence par une date est un titre demail
    Pour chaque campagne, je dois calculer les moyennes de col1, col2 et col3 pour les couples, les familles et les amis. 3 groupes a chaque fois. A un nouveau titre de campagne qui commence par "PT" je recommence le calcul.
    Le but est d'avoir la moyenne de la col1, col2 et col3 pour les couples, les Friends et Adults pour l'email 1.
    Et de faire pareil pour l'email 2. D'où mon do loop while
    Voici un exemple de donnees :

    PT  email     1		col1	col2	col3
    2015-03-04_Couples	21,5%	0,6%	2,7%
    2015-03-04_Families	22,5%	1,1%	4,7%
    2015-03-04_Friends	23,4%	0,5%	2,0%
    2015-03-18_families	13,4%	1,2%	9,1%
    2015-03-18_Adults	12,5%	1,6%	12,8%
    2015-03-20_adults	17,7%	2,3%	12,9%
    2015-03-20_families	16,2%	2,4%	14,9%
    PT  email      2                                   
    2015-03-04_Couples	21,5%	0,6%	2,7%
    2015-03-04_Families	22,5%	1,1%	4,7%
    2015-03-04_Friends	23,4%	0,5%	2,0%
    2015-03-18_families	13,4%	1,2%	9,1%
    2015-03-18_Adults	12,5%	1,6%	12,8%
    2015-03-20_adults	17,7%	2,3%	12,9%
    2015-03-20_families	16,2%	2,4%	14,9%

    Voilà ma macro:

    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
    Dim i As Integer
    Dim j As Integer
    Dim lastcell As Integer
    Dim lastcell2 As Integer
     
     
    lastcell = Sheets(1).Cells(65000, 1).End(xlUp).Row
    lastcell2 = Sheets(1).Cells(65000, 1).End(xlUp).Row
     
     
        For i = 1 To lastcell
            extraction = Left(Cells(i, 1), 2)
            'MsgBox extraction
            Cells(i, 1).Select
            For Each cell In Selection
                Cells(i, 1).Value = LCase(Cells(i, 1).Value)
            Next cell
        Next i
     
            Do
                  For j = 1 To lastcell2
                    If Cells(j, 1).Value Like "*couples" Or Cells(j, 1).Value Like "*families" Then
                        tot = tot + Cells(j, 2)
                        Count = Count + 1
                    End If
                    Next j
     
            Loop While extraction = "pt"
    Merci si vous avez une idee

  2. #2
    Membre à l'essai
    Homme Profil pro
    Mécatronicien
    Inscrit en
    Mars 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Mécatronicien

    Informations forums :
    Inscription : Mars 2015
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Salut, ça marche en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For i = 1 To lastcell
     extraction = Left(Cells(i, 1), 2)
     'MsgBox extraction
     Cells(i, 1).Select
     For Each cell In Selection
     Cells(i, 1).Value = LCase(Cells(i, 1).Value)
     Next cell
    i = i + 1
     Next i
    J'ai un doute si il le fait automatiquement

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    merci pour ta réponse mais le probleme se situe sur la boucle do et pas avant.

    Cest a dire que le programme me fait l'addition de tous les pourcentages des emails1 et 2.
    Alors que je veux uniquement le total par email.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Mécatronicien
    Inscrit en
    Mars 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Mécatronicien

    Informations forums :
    Inscription : Mars 2015
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Ah ok, pas compris, maintenant oui...


    Tu cherches à faire le total de chaque colonne par groupe
    Sur ton tableur, tu peux faire une case fusionnée appelé email 1 ("A"); à coté tu mets les 2015_couples("B")... et les %("c"; "d" ...)

    et tu peux t'inspirer du code suivant
    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
     
     
    Set AireMesures = Range(Range("A" & I)), Range(derniereLigne)
    For Each email In AireMesures
        If email <> "" Then
     
            If email.MergeCells = True Then
                Set AireDesCellulesemail = email.MergeArea
                i= 0
                For j = AireDesCellulesemail.Count To 1 Step -1
                    'tu selectionne la colonne % pour total
     
                Next j
     
                'calcul  du total
     
                Set AireDesCellulesemail = Nothing
     
            End If
        End If
    Next email
    Set AireMesures = Nothing
    j'ai eu un problème similaire mais plus complexe, j'ai retirer des parties dont tu ne doit pas avoir besoin.
    Sur ce, bonne chance,

    gabi974

Discussions similaires

  1. Une boucle While qui ne fonctionne pas
    Par seremei dans le forum Langage
    Réponses: 6
    Dernier message: 25/10/2012, 11h33
  2. Range.Offset(1) dans une boucle qui ne fonctionne pas
    Par Pierre.g dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/08/2008, 11h58
  3. boucle if-then qui ne fonctionne pas
    Par les4c77 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/09/2007, 16h24
  4. Fonction While {} qui ne fonctionne pas
    Par zoom61 dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2006, 12h17
  5. [MySQL] Boucle qui ne fonctionne pas bien que la 1ère fois
    Par R.L. dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/05/2006, 21h59

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