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 :

[VBA-E] Copier une plage de cellules avec critère


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Par défaut [VBA-E] Copier une plage de cellules avec critère
    Bonjour,

    Encore un souci avec VBA. Je ne trouve pas comment faire pour vérifier, dans un onglet, la présence d'une valeur particulière.

    Ci joint, le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim lignevideE As Long
    Dim test As Long
    Dim test2 As Long
     
        ' je récupère la valeur de la 1ere colonne F, onglet "Prévisionnel"
    test = Sheets("Prévisionnel").Range("E2")
    ==> Comment faire pour savoir si il existe une même valeur dans la colonne E de l'onglet "Collecte_Données" ?

    Je dois faire un If test = test2 then...

    Cependant je ne sais pas comment faire une recherche d'une valeur sur une colonne ?

    le reste fonctionne: je copie la plage à la suite des données existantes sur l'onglet "Collecte_Données"

    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
     
    Else
           'derniere ligne vide de la colonne E
    lignevideE = Sheets("Collecte_Données").Range("E65536").End(xlUp).Row + 1
     
        'je copie la plage "plage_copie" de l'onglet "Prévisionnel"
    Sheets("Prévisionnel").Range("plage_copie").Copy
     
        'je me positionne sur l'onglet cible
    Sheets("Collecte_Données").Activate
     
        'je me positionne sur la premiere cellule vide la colonne E et je colle
    Range("E" & lignevideE).Select
    Selection.PasteSpecial Paste:=xlPasteValues
    End If
    D'avance, merci

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    Inspires-toi de ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim cellule As Range
    For Each cellule In Feuille("NomFeuille").Range("H:H")
        If cellule.Value = Feuille("nomAutreFeuille").Range("celluleCritere").Value Then 
            ' traitement
        End If
    Next

  3. #3
    Membre émérite
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    I=0
    Found=False
     
    'test valeur recherchée, range est la plage de recherche
     
    For Each Cel in Range(E1:E11).cells 
       i=i+1
       If cel.value = test then exit For : Found=True
    Next

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Par défaut
    Ok je viens de piger l'ensemble . Merci à vous 2

    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
     
    Dim lignevideE As Long
    Dim test As Long
    Dim cellule As Range
     
        ' je récupère la valeur de la 1ere colonne E, onglet "Prévisionnel"
    test = Sheets("Prévisionnel").Range("E2")
     
    For Each cellule In Sheets("Collecte_Données").Range("E:E")
        If cellule.Value = Sheets("Prévisionnel").Range("E2").Value Then
           Exit Sub
    End If
     Next
     
     'derniere ligne vide de la colonne E
    lignevideE = Sheets("Collecte_Données").Range("E65536").End(xlUp).Row + 1
     
        'je copie la plage "plage_copie" de l'onglet "Prévisionnel"
    Sheets("Prévisionnel").Range("plage_copie").Copy
     
        'je me positionne sur l'onglet cible
    Sheets("Collecte_Données").Activate
     
        'je me positionne sur la premiere cellule vide la colonne E et je colle
    Range("E" & lignevideE).Select
    Selection.PasteSpecial Paste:=xlPasteValues

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Par défaut
    Un léger souci:

    Je ne trouve pas comment aller se positionner sur une cellule précise

    => je souhaite en effet me positionner sur la premiere cellule répondant au critère (de la colonne E) et copier/Coller (je sais faire)

    Je cherche dans l'aide en ligne mais sans résultat

    PS: j'ai supprimé le "Résolu" car cela fait suite à mon précédent souci

  6. #6
    Membre émérite
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Par défaut
    Sur quelle celule???

    La premiere vide ca ca devrait etre bon vu le code...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Par défaut
    Non Vesta, ce n'est pas sur la derniere vide.

    En fait , il faut que je récupère la position de la premiere cellule de la colonne E qui vérifie le critère ( = 1ere cellule de la colonne E dans l'autre onglet)

    En fait, je bloque avec F1 sur comment se positionner sur une autre cellule que la 1ere ou la derniere.

    merci pour vos recherches

Discussions similaires

  1. Trier une plage de cellules
    Par Squelet dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 03/12/2019, 13h04
  2. Réponses: 1
    Dernier message: 11/09/2014, 14h48
  3. Pb de lecture données dans une plage de cellule avec itération
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/07/2006, 13h33
  4. [VBA-E]Copier une serie de cellules dans une autre feuille
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/03/2006, 17h23
  5. [VBA] Copier une plage de cellules dans un fichier fermé
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/01/2006, 16h52

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