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 :

Multiplication du résultat [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut Multiplication du résultat
    Bonsoir,

    j'ai fait le tour des sujets déjà traités mais je n'ai pas trouvé de réponses à mon problème.

    Je dois convertir ma cellule pourcentage en numero tout en gardant la valeur, c'est a dire en pourcentage : 20% et au final j'aimerai avoir dans ma cellule 20 mais en format numéro.

    Voici la macro une partis de la macro que j'ai faite concernant ce passage :

    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
     
    Sub Traitement()
     
    Dim td As Worksheet
    Dim taille As Range
     
     
    'création de la feuille'
    Worksheets("PO - PB").Copy After:=Worksheets("Feuil2")
    ActiveSheet.Name = "traitement date" 'nom de la feuille'
     
       Set td = Worksheets("traitement date")
        With td
            Set taille = .Range("A2:CN4")
     
            For Each cell In taille
             vcl = cell.Value
     
                If InStr(1, cell.Text, "%") > 0 Then
                cell.EntireColumn.Select
                Selection.Rows("2:761").Select
                Selection.NumberFormat = "@"
                End If
     
            Next
                End With
     
    End Sub
    le résultat que j'obtient est pas exemple : 20% -> 0.2 il me suffit juste de multiplier par 100 le résultat mais je trouve pas comment faire...

    Je vous remercie

    Julien

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Bonjour à toi,
    Si tu as parcourus le forum tu as du voir que le code était proprement affiché.
    Merci de le mettre en balise CODE bouton #

    Ensuite ton code n'est pas très cohérent...
    Tu récupère une Range :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set taille = .Range("A2:CN4")
    Tu parcours ses cellules, mais pour chaque cellule tu reselectionne au final les lignes 2 à 761 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Rows("2:761").Select
    Et tu leurs appliques le format nombre...

    C'est largement optimisable, mais il faudrait savoir exactement comment sont tes données...
    Et comme la réponse nécessite une modification de ton code, il faut que tu nous en dise plus.
    Mais le principe est que pour chaque cellule dont tu modifiera le NumberFormat tu doit multiplie sa .Value par 100

  3. #3
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    bonsoir cerede2000, je te remercie de m’accorder du temps.

    Je viens de me lancer dans le vba qui je l’avoue est fort intéressant.

    De plus, voici en entier 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Sub Traitement()
    
    Dim td As Worksheet
    Dim taille As Range
    Dim myDate As Date
    
    'création de la feuille'
    Worksheets("PO - PB").Copy After:=Worksheets("Feuil2")
    ActiveSheet.Name = "traitement date" 'nom de la feuille'
    ActiveSheet.AutoFilterMode = False 'desactiver les filtres'
    ActiveWindow.FreezePanes = False 'désactiver les volets'
    ligne = Range("A" & Rows.Count).End(xlUp).Row
    colomne = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    
       Set td = Worksheets("traitement date")
        With td
            Set taille = .Range("A2:CN4")
            
            
            For Each cell In taille
             vcl = cell.Value
                
                'detecter date et la mettre en texte + bon format'
                If IsDate(vcl) Then
                cell.EntireColumn.Select
                Selection.Rows("2:761").Select
                Selection.NumberFormat = "@"
                Selection.NumberFormat = "yyyy-mm-dd"
                End If
                    
                If InStr(1, cell.Text, "€") > 0 Then
                cell.EntireColumn.Select
                Selection.Rows("2:761").Select
                Selection.NumberFormat = "0.00"  'pour 2 décimales'
                End If
                
                If InStr(1, cell.Text, "%") > 0 Then
                cell.EntireColumn.Select
                Selection.Rows("2:761").Select
                Selection.NumberFormat = "0.0"
                End If
                
            Next
                End With
        
    End Sub
    J'ai 128 colonnes et 761 lignes

    Mais justement la ou je bloque c'est pour exprimer ".value par 100" je n'arrive pas a l'exprimer en VBA

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Merci de lire attentivement ceci : http://www.developpez.net/forums/d35...-balises-code/
    Et de mettre ton code entre balise !

    Précise dans quelles colonnes peuvent être les valeurs en %

  5. #5
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    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
     Sub Traitement()
    
    Dim td As Worksheet
    Dim taille As Range
    Dim myDate As Date
    
    'création de la feuille'
    Worksheets("PO - PB").Copy After:=Worksheets("Feuil2")
    ActiveSheet.Name = "traitement date" 'nom de la feuille'
    ActiveSheet.AutoFilterMode = False 'desactiver les filtres'
    ActiveWindow.FreezePanes = False 'désactiver les volets'
    ligne = Range("A" & Rows.Count).End(xlUp).Row
    colomne = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    
    Set td = Worksheets("traitement date")
    With td
    Set taille = .Range("A2:CN4")
    
    
    For Each cell In taille
    vcl = cell.Value
    
    'detecter date et la mettre en texte + bon format'
    If IsDate(vcl) Then
    cell.EntireColumn.Select
    Selection.Rows("2:761").Select
    Selection.NumberFormat = "@"
    Selection.NumberFormat = "yyyy-mm-dd"
    End If
    
    If InStr(1, cell.Text, "€") > 0 Then
    cell.EntireColumn.Select
    Selection.Rows("2:761").Select
    Selection.NumberFormat = "0.00" 'pour 2 décimales'
    End If
    
    If InStr(1, cell.Text, "%") > 0 Then
    cell.EntireColumn.Select
    Selection.Rows("2:761").Select
    Selection.NumberFormat = "0.0"
    End If
    
    Next
    End With
    
    End Sub
    Par exemple, j'ai une colonne qui s'appelle pourcentage subvention en format pourcentage, je veux donc la passer en format numéro tout en gardant la valeur d'un nombre entier ex : 20.
    Je suis daccord avec ta technique du .value mais je ne trouve pas comment l'exprimer avec une multiplication

  6. #6
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Merci également d'éditer des message précédent pour mettre ton code entre balises....

    Voici un exemple que tu pourra adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
        Dim rng As Range
        Dim cel As Range
     
        Set rng = [C2:C761] 'Ma colonne C est la colonne des pourcentage, comme j'ai un entête je commence a la ligne 2
        rng.NumberFormat = "@" 'Je met en format nombre
     
        For Each cel In rng 'Pour chaque cellules de ma colonne
            cel.Value = cel.Value * 100 'valeur de la cellule = valeur de la cellule * 100
        Next
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherchev poussée avec résultats multiples
    Par solorac dans le forum Excel
    Réponses: 13
    Dernier message: 22/06/2007, 11h14
  2. [SQL] Multiplication après requête qui donne plusieurs données en résultats
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 04/06/2007, 11h34
  3. [SQL] Recherche à résultats multiples SQL - PHP
    Par Paradise01 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/08/2006, 14h52
  4. Réponses: 5
    Dernier message: 04/07/2006, 11h19
  5. selection simple mais résultat multiple dans combobox
    Par forzaxelah dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/06/2006, 14h21

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