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 :

selection de valeur non nuls dans une plage


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 35
    Points : 37
    Points
    37
    Par défaut selection de valeur non nuls dans une plage
    J'ai écris un code pour copier des valeurs dans une plage mais il copie en double ou triple les valeurs. Je voudrais que la valeur copier soit sous le nom de personne désignée.

    Voici le code. J'ai aussi joint la Toto qui contient la plage.

    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
    Sub Selection_valeur_plage()
        Dim coef As Variant
     
        NCol = Worksheets("feuil1").Range("B1:J1").Columns.Count
        NR = Worksheets("feuil1").Range("B4:B8").Rows.Count
        y = 4
        x = 0
        j = 1
     
        For x = 2 To NCol + 6
            For y = 4 To NR + 3
                coef = Cells(y, x).Value
                If coef <> "0" Then
                    If coef <> "" Then
                    coef = Cells(y, x).Value
                    nom = Cells(1, x).Value
                    Cells(1, NCol + 2 + j).Value = nom
                    Cells(y, NCol + 2 + j).Value = coef
                    j = j + 1
                    End If
                End If
            Next
        Next
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Suffisait de demander

    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
    Sub Selection_valeur_plage()
        Dim coef As Variant
     
        NCol = Worksheets("feuil1").Range("B1:J1").Columns.Count
        NR = Worksheets("feuil1").Range("B4:B8").Rows.Count
        y = 4
        x = 0
        j = 1
     
        For x = 2 To NCol + 1
            For y = 4 To NR + 4
                coef = Cells(y, x).Value
                nom = Cells(1, x).Value
                If coef <> "0" And coef <> "" Then
                    Cells(y, NCol + 2 + j).Value = coef
                End If
            Next
            Cells(1, NCol + 2 + j).Value = nom
            j = j + 1
        Next
    End Sub
    Je viens d'essayer et ça marche ! Il suffisait de faire passer ton j à j+1 à chaque fois que tu changeais de colonne. Tu le faisais à chaque saut de ligne aussi. De même, tu peux écrire le "nom" seulement quand tu changes de colonne vu qu'il reste le même.

    Au plaisir
    DeaD

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Et en simplifiant ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Plage As Range, cell as range
        Set Plage = ActiveSheet.UsedRange.SpecialCells(xlTextValues)
        For Each Cell In Plage
            MsgBox Cell.Value
        Next
    On peut utiliser Union pour obtenir la plage ses cellules contenant des valeurs et des textes

    Edit
    Je te le mets car l'aide n'est pas très explicite là-dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
    Dim Plage As Range, cell as range
        Set Plage = Union(ActiveSheet.UsedRange.SpecialCells(xlTextValues), _
        ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas, xlNumbers))
        For Each Cell In Plage
            MsgBox Cell.Value
        Next
    End Sub

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    Merci!
    Ça marche maintenant.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/12/2008, 03h39
  2. Copier valeur non vide dans une colonne
    Par Toad08 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/03/2008, 21h40
  3. nombre de valeurs non nulles dans une tables
    Par 080983 dans le forum SQL
    Réponses: 33
    Dernier message: 27/08/2007, 12h04
  4. [Débutant] Recherche de minimum non nul dans une matrice
    Par sebastien69 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/06/2007, 16h00
  5. Valeur non trouvé dans une requète SQL
    Par Jeankiki dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/12/2006, 16h36

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