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 :

Lecture plage et ajout ligne auto [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Par défaut Lecture plage et ajout ligne auto
    Bonjour, je cherche une macro capable de lire une plage.
    si la cellule lue contient ex. "X" alors elle va rajouter une ligne à un tableau présent une autre feuille.
    dans cette ligne, la première colonne contiendra la valeur d'une cellule présente sur la même ligne que celle où elle à trouvé un "X", la deuxième colonne de cette ligne contiendra l'en-tête de la colonne où se trouve "X"

    D'avance merci pour vos aides et retours.

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu peux rechercher la cellule qui contient "X" avec la méthode Find.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set C= Plage.Find("X",,xlValues,xlWhole)
    Si cette cellule est trouvée, tu peux faire les copies connaissant les coordonnées de cette cellule (C.Row et C.Column).

    Cordialement.

  3. #3
    Membre habitué
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Par défaut
    Bonjour,

    Tout d'abord merci pour ton aide.
    en fait j'étais parti sur ce code :

    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 For_Each_Next_Plage()
    Dim FL1 As Worksheet, FL2 As Worksheet, Cell As Range, Plage As Range
    Dim Var1
     
        Set FL1 = Worksheets("Feuil1")
        Set FL2 = Worksheets("Feuil2")
        With FL1
            'Détermination de la plage de cellules à lire
            'Peut s'écrire en utilisant l'objet range de la plage
            'For Each Cell In .Range("B2:E7")
     
            'ou en utilisant l'objet Plage (range) de la plage
            Set Plage = .Range("B2:E7")
            For Each Cell In Plage
     
                'Valeur de la cellule lue
                Var1 = Cell.Value
     
            Next
        End With
        Set FL1 = Nothing
        Set Plage = Nothing
    End Sub
    la partie qui me manque est si var1 = "X" alors... créer une ligne dans feuil2 avec première valeur même ligne. colonne1 et deuxième valeur même colonne.ligne1
    sachant qu'à chaque relance de la macro, la feuille 2 doit être entièrement réécrite.

    Cordialement

    Re !

    toujours dans mon investigation j'ai quelques peu avancé :

    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
    Sub For_Each_Next_Plage()
    Dim FL1 As Worksheet, FL2 As Worksheet, Cell As Range, Plage As Range, NoLig As Long
    Dim ligne As String, colonne As String
    Dim Var1, Var2
     
        Set FL1 = Worksheets("Feuil1")
        With FL1
            'Détermination de la plage de cellules à lire
            'Peut s'écrire en utilisant l'objet range de la plage
            'For Each Cell In .Range("B2:E7")
     
            'ou en utilisant l'objet Plage (range) de la plage
            Set Plage = .Range("B2:E7")
            For Each Cell In Plage
     
                'Valeur de la cellule lue
                Var1 = Cell.Value
                
                
                
                
                            
                If Var1 = "X" Then
                    Var2 = Cell(Cell.Row, 0).Value
                    'Var3 = Cell.Address
                    
                    Sheets("Feuil2").Select
                    [A65536].End(xlUp).Select
                    ActiveCell.Offset(1, 0).Select
                    ActiveCell.FormulaR1C1 = Var2
                End If
                                  
                                 
            Next
        End With
        Set FL1 = Nothing
        Set Plage = Nothing
    End Sub

    cependant, la ligne Var2=... ne fonctionne pas, je voudrais qu'elle prenne la valeur de la Colonne A de la ligne ou se trouve ma cellule trouvée.

    Comment faire ??

    je ne pas être très loin du but !

    merci d'avance

  4. #4
    Membre habitué
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Par défaut La Soluce !
    j'ai fini par trouvé tout seul :

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Sub saisie_auto_profils()
    Dim FL1 As Worksheet, FL2 As Worksheet, Cell As Range, Plage As Range, NoLig As Long
    Dim nom As String, societe As String
    Dim Var1, Var2, Var3
     
     
        ' se place dans feuille 2 et vide le contenu
        Sheets("Profils").Select
        Range("A2:B2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.ClearContents
        Rows("3:5000").Select
        Selection.Delete Shift:=xlUp
        Range("A2").Select
        Sheets("Actifs").Select
     
        Set FL1 = Worksheets("Actifs")
        With FL1
            'Détermination de la plage de cellules à lire
            'Peut s'écrire en utilisant l'objet range de la plage
            'For Each Cell In .Range("B2:E7")
     
            'ou en utilisant l'objet Plage (range) de la plage
            Set Plage = .Range("Y3:BG2000")
            For Each Cell In Plage
     
     
                'Valeur de la cellule lue
                Var1 = Cell.Value
     
                'Valeur nom et société quand X trouvé
     
     
                If Var1 = "X" Then
     
                    nom = Cells(Cell.Row, 5)
                    societe = Cells(2, Cell.Column)
     
                    'se positionne dans feuille2
                    Sheets("Profils").Select
                    'cherche la dernière valeur colonne A
                    '[A65536].End(xlUp).Select
                    'saisie la valeur nom
                    ActiveCell.FormulaR1C1 = nom
                    'décale d'une colonne vers la droite
                    ActiveCell.Offset(0, 1).Select
                    'se positionne derniere valeur colonne B
                    '[B65536].End(xlUp).Select
                    'décale d'une ligne vers le bas
                    'ActiveCell.Offset(1, 0).Select
                    'saisie la valeur societe
                    ActiveCell.FormulaR1C1 = societe
                    ActiveCell.Offset(1, -1).Select
                    'se place sur cellule en dessous à gauche
                    'retourne feuille 1
                    Sheets("Actifs").Select
     
                End If
     
     
            Next
        End With
        Set FL1 = Nothing
        Set Plage = Nothing
    End Sub
    encore merci pour l'aide, j'espère que ce poste pourra aider d'autres personnes !

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

Discussions similaires

  1. [lecture d'un fichier] ligne par ligne
    Par pitit777 dans le forum C++
    Réponses: 3
    Dernier message: 26/11/2005, 11h22
  2. retour à la ligne auto dans un bête tableau
    Par junty dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 13/10/2005, 17h15
  3. Trigger inserant une ligne auto en cas d'UPDATE de 0 lign
    Par bbshadoks dans le forum Développement
    Réponses: 4
    Dernier message: 04/05/2005, 13h00
  4. Lecture de fichier - dernière ligne non prise en compte
    Par JulienPles dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h57
  5. Lecture de saut de ligne...
    Par Garion dans le forum C
    Réponses: 5
    Dernier message: 13/02/2004, 11h42

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