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 :

transfert lignes,colonnes sur deux feuille avec condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut transfert lignes,colonnes sur deux feuille avec condition
    bonjour à tous,

    j'ai un petit problème de débutant , même très débutant pour moi
    donc j'ai un classeur avec plusieurs feuilles
    dans feuille1, je voudrais avec une condition que si colonne D ="" a partir d'une certaine ligne alors il me transfert 4 colonne de la feuille1 a la feuille2 et qu'il me les tri en fonction de la colonneAG.

    Merçi de vos réponses

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonsoir

    C'est pas très clair, le but du jeu est de confirmé la méthode suivante et de remplacer les ? par des valeurs concrètes.


    je parcours la colonne D de la 1er feuille

    a partir de la ligne ?? si la colonne D de la ligne est vide

    je copie les colonne ?, ?, ? et ? de cette ligne

    je les colles dans la deuxième feuille en colonne ?, ?, ? et ? à la ligne ?? (à la suite des autres?)

    dans la deuxième feuille, y a t-il une ligne de titre?

  3. #3
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    j'ai fait un bon bout de 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
    28
    29
    Sub Test1()
    Dim StrNom As String                            'Declaration des variables'
    Dim IntA As Integer
    Dim StrIntitule As String
    Dim IntD As Double
    Dim i As Integer
    Dim j As Double
    j = 9
     
                For i = 1352 To 1736                    'boucle pour qui va tester toute les cellule de D si elles sont vides
                Sheets("Cdes Bât.").Select              ' positionnement sur la page bat
                If Range("D" & i) = "" Then             ' test si la cellule est vides
                StrNom = Range("F" & i)                 ' si elle est vide on recupere ce qu'il nous faut
                StrIntitule = Range("G" & i)
                IntA = Range("AG" & i)
                IntD = Range("A" & i)
                Sheets("Julien").Select                 ' positionnement sur la page julien
                Range("A" & j).Value = IntA             ' ajout des valeurs ds la pages julien
                Range("B" & j).Value = StrNom
                Range("C" & j).Value = StrIntitule
                Range("D" & j).Value = IntD
     
     
     
                End If
                j = j + 1
                Next
     
    End Sub
    2 problèmes:
    - il fait un copier coller et moi, je veux un couper coller
    - quand je lance le macro, il marche bien mais, il me met deux fois la liste.
    qui peut m'aider ???

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    essaye comme ça

    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
     
    Sub Test1()
    Dim i As Integer
    Dim j As Double
    Dim wsh1 As Worksheet, wsh2 As Worksheet
    Set wsh1 = Sheets("Cdes Bât."): Set wsh2 = Sheets("Julien")
    j = 9
     
    For i = 1352 To 1736 'boucle pour qui va tester toute les cellule de D si elles sont vides
      If wsh1.Range("D" & i) = "" Then ' test si la cellule est vides
        wsh1.Range("F" & i).Cut wsh2.Range("B" & j) ' si elle est vide on recupere ce qu'il nous faut
        wsh1.Range("G" & i).Cut wsh2.Range("C" & j)
        wsh1.Range("AG" & i).Cut wsh2.Range("A" & j)
        wsh1.Range("A" & i).Cut wsh2.Range("D" & j)
      End If
      j = j + 1
    Next
    Set wsh1 = Nothing: Set wsh2 = Nothing
    End Sub

  5. #5
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    ça marche mais encore deux choses:

    - dans la page julien , il commence a mettre la liste a partir de la ligne 270
    - il fait toujours un copier/coller et moi, je voudrais un couper/coller

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Salut Zyhack, je me suis permis de déplacer j=j+1 dans ton 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
    Sub Test1()
    Dim i As Integer
    Dim j As Double
    Dim wsh1 As Worksheet, wsh2 As Worksheet
    Set wsh1 = Sheets("Cdes Bât."): Set wsh2 = Sheets("Julien")
    j = 9
     
    For i = 1352 To 1736 'boucle pour qui va tester toute les cellule de D si elles sont vides
      If wsh1.Range("D" & i) = "" Then ' test si la cellule est vides
        wsh1.Range("F" & i).Cut wsh2.Range("B" & j) ' si elle est vide on recupere ce qu'il nous faut
        wsh1.Range("G" & i).Cut wsh2.Range("C" & j)
        wsh1.Range("AG" & i).Cut wsh2.Range("A" & j)
        wsh1.Range("A" & i).Cut wsh2.Range("D" & j)
    j = j + 1
      End If 
    Next
    Set wsh1 = Nothing: Set wsh2 = Nothing
    End Sub

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

Discussions similaires

  1. Transfert de données entre deux tables avec conditions
    Par ric009 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/03/2014, 09h47
  2. [XL-2002] Recherche d'une valeur sur plusieurs feuilles avec conditions
    Par Rat-Thon dans le forum Excel
    Réponses: 4
    Dernier message: 06/12/2013, 12h26
  3. Copie de données entre deux feuilles avec condition "Année"
    Par ElPibeOro dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/07/2013, 15h58
  4. [XL-2007] Doublons sur deux feuilles avec 26 colonnes chacunes
    Par jimmycamelon dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/03/2011, 16h56
  5. [XL-2007] Copier coller une ligne excel sur autre feuille avec conditions
    Par amstelveen dans le forum Excel
    Réponses: 5
    Dernier message: 11/05/2009, 18h54

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