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 :

Problème avec un range


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2011
    Messages : 34
    Par défaut Problème avec un range
    Bonjour à tous,
    Je voudrais sélectionner les cellules se trouvant dans la colonne E puis de G à M (je veux "sauter" la colonne F) à l'aide d'une macro mais lorsque j'execute mon code, Excel me sélectionne de les colonnes de E à M...(F compris...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("E" & i, "G" & i & ":M" & i).Select
    savez-vous comment faire ?

  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,

    Essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Union(Range("E" & i), Range("G" & i & ":M" & i)).Select
    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2011
    Messages : 34
    Par défaut
    ça n'a pas marché

    Erreur d'execution '1004'
    La méthode 'Range' de l'objet '_Global' a échoué
    J'ai également essayé ça mais j'obtiens le même message d'erreur (Global_ etc...) sur "set plage1"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim plage1 As Range
    Dim plage2 As Range
    Set plage1 = Range("E" & i)
    Set plage2 = Range("G" & i & ":M" & i)
    Application.Union(Range("plage1"), Range("plage2")).Select

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    j'ai essayé avec l'enregistreur de macro qui me donne ceci pour la ligne 3.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range("E3,G3:M3").Select
    En regardant ton code, la virgule doit je pense être entourée de ". et il manque un & après le i.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("E" & i & ",G" & i & ":M" & i).Select
    Attention au select. A éviter autant que possible.

  5. #5
    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
    Assures-toi que ta variable i est bien renseignée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim plage1 As Range
    Dim plage2 As Range
     
    With Worksheets("Feuil1") ' A adapter
        Set plage1 = .Range("E" & i)
        Set plage2 = .Range("G" & i & ":M" & i)
        Application.Union(plage1, plage2).Select
    End With
    Cordialement.

  6. #6
    Membre averti
    Homme Profil pro
    Statisticien
    Inscrit en
    Août 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Statisticien
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2011
    Messages : 34
    Par défaut
    Citation Envoyé par gFZT82 Voir le message
    Assures-toi que ta variable i est bien renseignée
    SUPER !!! ça fonctionne !!!
    Merci beaucoup !

    Dernière question :
    Existe-t-il un moyen de déclarer plage1 et plage2 une fois pour toute et utiliser application.union dans plusieurs boucles IF ?
    Ceci pour éviter de retaper ça à chaque fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Set plage1 = .Range("E" & i)
        Set plage2 = .Range("G" & i & ":M" & i)
    Merci encore pour votre aide !

  7. #7
    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
    Tu dois te poser la question de la durée de vie et de la portée de tes variables plage1 et plage2.
    Si elles sont déclarées avec l’instruction Dim à l’intérieur d’une procédure, elles sont utilisables autant de fois que tu le souhaites … tant que tu ne sors pas de la procédure.
    Tu trouveras dans le forum plusieurs exemples sur les déclarations de variables.
    Si tu veux utiliser plusieurs fois l’union de plage1 et plage2, tu peux déclarer directement cette plage (MaPlage).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim MaPlage As Range
     
    With Worksheets("Feuil1") ' A adapter
        Set MaPlage = Application.Union(.Range("E" & i), .Range("G" & i & ":M" & i))
        MaPlage.Select
    End With
    Cordialement.

  8. #8
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Re, IF n'est pas et ne sera jamais une boucle !.

    Si tu as vu ma réponse, tu peux très bien mettre la valeur de ce range dans une variable et l'utiliser où bon te semble.

    Salut gFZT82

Discussions similaires

  1. Problème avec la fonction Range
    Par ludojojo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/05/2008, 14h42
  2. Problème avec Feuille.Range
    Par david71 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/02/2008, 01h37
  3. Problème avec Range.Formula
    Par zerti dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/07/2007, 17h25
  4. [VBA-E] Encore un problème avec les limites de RANGE
    Par durdesfois dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2007, 19h56
  5. VBA Excel (débutant) - problème avec la copie d'un range
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2006, 16h32

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