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 :

Range sur une plage de cellule avec ligne variable VBA [XL-2016]


Sujet :

Macros et VBA Excel

  1. #21
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par beta007 Voir le message
    re,


    merci, mais cette partie du problème je l'avais compris , la pertie que je ne comprends pas est comment faire pour que mon"IF" travaile sur le bon onglet sans employer de ".Select" ? (voir exemple plus haut)
    Ta feuille est dans le With.
    Tu n'as plus qu'à rapporter à cette feuille les Range qui lui appartiennent en plaçant un point devant.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With Sheets(Onglet(16))
        If Now - .Range("B1") > 1 Then
            TypeEquipe = InputBox("entrer 2 ou 3", "nbrs équipe", 2)
            .Range("E1") = TypeEquipe
        End If
    End With
    EDIT :
    rappel :
    A noter : toujours indiquer qu'elle propriété tu utilises... Dans l'exemple j'utilise la propriété Value des Range.
    Donc...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With Sheets(Onglet(16))
        If Now - .Range("B1").Value > 1 Then
            TypeEquipe = InputBox("entrer 2 ou 3", "nbrs équipe", 2)
            .Range("E1").Value = TypeEquipe
        End If
    End With

  2. #22
    Membre confirmé
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Par défaut
    comme cela c'est clair
    merci encore de votre aide et de votre patience

  3. #23
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, Il ne faut pas mettre le . devant If, mais devant les plages de l'onglet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With Sheets(Onglet(16))
        If Now - .Range("B1") > 1 Then
            TypeEquipe = InputBox("entrer 2 ou 3", "nbrs équipe", 2)
            .Range("E1") = TypeEquipe
        End If
    End With
    En fait,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Sheets(Onglet(16))
         .range("A1"). copy
    End With
    c'est pareil que d'écrire,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Onglet(16)).range("A1").copy
    En fait "If" est seulement une fonction "si" qui doit agir sur une plage de la sheets considérée. c'est donc les plages, colonnes ou ligne qui doivent être précédées par un point.
    Par ailleurs etes vous sur de l'écriture Sheets(Onglet(16)). ça me semble étrange?
    Cordialement

  4. #24
    Membre confirmé
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Par défaut
    bonjour,

    Citation Envoyé par Transitoire Voir le message
    Par ailleurs etes vous sur de l'écriture Sheets(Onglet(16)). ça me semble étrange?
    Cordialement
    oui (je crois), le "16" est en fait un compteur et cette partie de la macro est dans une boucle et a chaque boucle je passe à l'onglet suivant (c'est peut-être pas la meilleur façon de faire mais cela marche )

    et vu que j'y suis j'ai encore un problème, je suis toujours en train d'enlever mes .Select que j'avais généreusement semé partout dans mes macros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sheets("donnee").Range(Cells(Ligne, 3), Cells(Ligne, 4)).Copy
    With Sheets("resultat")
            .Range(Cells(Ligne, 3), Cells(Ligne, 4)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    End With
    mais là cela ne passe pas, les deux écritures bug (avec with ou sans), si je ne suis pas sur le bon onglet: soit je suis sur l'onglet donnee et cela copie , mais pas possible de coller soit l'inverse.
    où est-ce que j'ai fait faux?
    merci encore de votre précieuse aide.

  5. #25
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par beta007 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("donnee").Range(Cells(Ligne, 3), Cells(Ligne, 4)).Copy
    Ceci ne peut pas fonctionner.
    Soit ton Sheets("donnee") ne sert à rien (si c'est la feuille active), soit (et c'est plus probable) il faut l'ajouter aussi à chaque Cells contenu dans le Range.
    Cela dit, il serait beaucoup plus simple de l'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("donnee").Range("C" & Ligne & ":D" & Ligne).Copy
    Ou même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("donnee").Range("C1:D1").Offset(Ligne-1, 0).Copy
    Idem pour le PasteSpecial.

  6. #26
    Membre confirmé
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Par défaut
    super et merci encore c'est parfait

  7. #27
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2020
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 150
    Par défaut Au s'cours !
    Bonsoir, je m'incruste car je tourne en rond grave (du fait de ma méconnaissance dramatique de vba évidemment) : je n'arrive pas à sélectionner une plage de cellules (contigües et sur la même ligne), en fonction d'une cell active quelconque ; jusqu'ici j'utilisais un brave :
    r = ActiveCell.Row
    Range(Cells(r, 4), Cells(r, 48)).Select
    etc.
    mais là je me fais jeter ; mon "r" n'est pas/plus reconnu dans un petit projet tout bête (pourtant je ne crois pas avoir eu à le déclarer dans les précédentes macros bidouillées jusqu'ici)... Si quelqu'un a la bonté de palier à mon ignardise, qu'il en soit remercié au centuple...

  8. #28
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Peut-être que tu devrais spécifier le nom de la feuille

    With Sheets("Nom de la feuille")
    r = .ActiveCell.Row
    .Range(.Cells(r, 4), .Cells(r, 48)).Select
    End With

    À noter les points
    Aussi éviter les Select. Il y a tout plein d'exemples ici selon ce que tu veux faire sans faire de Select.

  9. #29
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2020
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 150
    Par défaut
    Citation Envoyé par parmi Voir le message
    Peut-être que tu devrais spécifier le nom de la feuille

    With Sheets("Nom de la feuille")
    r = .ActiveCell.Row
    .Range(.Cells(r, 4), .Cells(r, 48)).Select
    End With

    À noter les points
    Aussi éviter les Select. Il y a tout plein d'exemples ici selon ce que tu veux faire sans faire de Select.
    Merci ! Mais il coince toujours sur r =.ActiveCell.Row --> erreur de compilation, "variable non définie"...
    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
    Private Sub NewEventInput_Click()
     
    With Sheets("BaseTARG")
    r = .ActiveCell.Row
    .Range(.Cells(r, 4), .Cells(r, 48)).Select
     
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = -0.14996795556505
            .PatternTintAndShade = 0
        End With
     
    Call gestion_FormBaseTARG.transferer_valeurs_FormBaseTARG
     
    Call gestion_FormBaseTARG.remplir_FormBaseTARG
     
    Sheets("BaseLeaderBoard").Activate
    Rows(6).Insert
     
    Sheets("BaseLeaderBoard").Activate
     
    Range("D6").Select
     
    ActiveCell = LaBoxDateSaisie.Value
    ActiveCell.Offset(0, 1) = ComboBoxSource.Value
    ActiveCell.Offset(0, 5) = boxdénom.Value
    ActiveCell.Offset(0, 15) = boxca.Value
    ActiveCell.Offset(0, 16) = BoxCodeTARG.Value
    ActiveCell.Offset(0, 17) = boxdénom.Value
    etc.

  10. #30
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Déclare ta variable "r" en début de macro

    Dim r as Long

  11. #31
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2020
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 150
    Par défaut
    Citation Envoyé par parmi Voir le message
    Déclare ta variable "r" en début de macro

    Dim r as Long
    Haaa.... ça fait du bien de sortir la tête de son c.. Merci Parmi !! 😆

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Saut de ligne sur une plage de cellules
    Par Excel'air dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/07/2018, 10h10
  2. Réponses: 1
    Dernier message: 11/09/2014, 15h48
  3. [XL-2000] Supprimer ligne si cellule d'une colonne = 0, sur une plage de cellules
    Par audesara dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/05/2011, 17h16
  4. [XL-2007] Dimensions d'une plage de cellule ? (avec Range.)
    Par Kwick dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/03/2010, 09h57
  5. Réponses: 2
    Dernier message: 27/09/2006, 20h41

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