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 :

Remplacer une ligne par une autre issue d'une plage nommée [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut Remplacer une ligne par une autre issue d'une plage nommée
    Bonjour à tous,

    Dans le cadre d'une petite macro, je sèche sur la manip suivante :
    Je souhaiterai remplacer une ligne identifiée par 2 critères, par une autre issue d'une plage nommée.

    A noter que ma plage nommée contient 7 lignes, et la msgbox demande à l'utilisateur s'il souhaite copier la première ligne ou toutes.

    La macro plante sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("mafeuille2").Row(i) = myRange.Cells(1)
    En vous remerciant !

    Voici mon 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
    25
    26
    27
     
    Private Sub ma_macro()
     
    Dim myRange As Range
    Dim num_version As Integer
    Dim yesno As Integer
     
    Set myRange = ThisWorkbook.Sheets(mafeuille).Range(mazonenommée)
     
    num_version = InputBox("Numéro de la version à exporter")
    yesno = MsgBox("Exporter seulement un run (Yes) ou tous les runs (No) ?", vbYesNo)
     
    If yesno = vbYes Then
    Workbooks.Open ("mon_fichier.xls")
    derlig = Sheets("mafeuille2").Range("A65536").End(xlUp).Row
     
        For i = 1 To derlig
            If Sheets("mafeuille2").Range("F" & i).Value = num_version Then
                If Sheets("mafeuille2").Range("E" & i).Value = 1 Then
                    Sheets("mafeuille2").Row(i) = myRange.Cells(1)
                End If
            End If
        Next i
     
    End If
     
    End Sub

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour, bonjour !

    Manque un « s » à Row

    Ne pas confondre la propriété Row et la collection Rows


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    Merci Marc-L ça ne plante plus !

    En revanche, avec mon "Cells(1)", je voulais sélectionner tout la ligne et non pas la première cellule de la première ligne (car l'argument colonne est facultatif). Tu peux m'éclairer sur ce point ?

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Cells() est cellule tandis que Rows() est une ligne …


    Ne pas oublier l'ami du débutant : le Générateur de documents livrant une base de code sur un plateau !

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    Ça ne marche pas.
    En faisant ça j'obtiens des lignes vides :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("mafeuille2").Rows(i) = myRange.Rows(1)
    alors qu'en faisant ça (et donc mes 7 lignes d'un coup, ce que je ne veux pas) j'ai bien ce que je veux mais * 7

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [myRange].Copy Destination:=Sheets("mafeuille2").Range("A" & i)


    Je n'ai pas compris ta deuxième partie de message

    Citation Envoyé par Marc-L Voir le message

    Ne pas oublier l'ami du débutant : le Générateur de documents livrant une base de code sur un plateau !

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut


    L'objet sans sa propriété c'est comme une voiture sans volant !

    Sheets("mafeuille2").Rows(i).Value = MyRange.Rows(1).Value

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    cool tout est ok

    Merci, je passe la discussion en résolu.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/08/2011, 11h12
  2. [Batch] Remplacer une ligne par une autre dans un fichier txt
    Par tinwul dans le forum Scripts/Batch
    Réponses: 9
    Dernier message: 03/07/2009, 13h58
  3. Réponses: 3
    Dernier message: 01/06/2009, 18h21
  4. Usage de SED: remplacement d'une ligne par une autre
    Par Shub-Niggurath dans le forum Administration système
    Réponses: 1
    Dernier message: 18/09/2008, 20h07
  5. Réponses: 9
    Dernier message: 22/05/2006, 12h21

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