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 probleme de variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 31
    Par défaut vba probleme de variable
    bonjour,

    je voudrais faire en sorte que lorsque une cellule de la colonne 28 est superieur à 5 alors la cellule
    à droite = oui.
    j'ai essayé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If target.Column = 28 And target.Value > 5 Then target.Offset (0,1) = "OUI"
    mais cela ne fonctionne pas.. pouvez vous m'aider svp ?!

    cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    Columns(29).FormulaR1C1 = "=IF(RC[-1]>5,""Oui"",""Non"")"
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 31
    Par défaut
    Ce code ne fonctionne pas non plus

  4. #4
    Invité
    Invité(e)
    Par défaut
    ou à tu placé ce code et comment la tu exécuté?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 31
    Par défaut
    Je l'ai écris dans le Microsoft Excel Objects de la page en question et je l'ai exécuté avec une macro vide

  6. #6
    Invité
    Invité(e)
    Par défaut
    place le code!
    si non place toi dans la macro de test que je t'ai posté et appuis sur la touche [F5]

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 31
    Par défaut
    Je sais pas si c'est moi mais je n'arrive pas à faire fonctionner cette macro, elle me fait buguer mon excel en voulant je pense mettre des oui dans tout les cellule de la colonne 29

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    si la colonne 28 ne contient pas de ligne vide dans ta plage (= ta plage est continue)

    une petite variante qui calcule la plage active pour ne mettre que la formule sur ces lignes
    pour ne pas alourdir le fichier, la formule est ensuite remplacée par la valeur "oui" ou "non"

    si ta plage n'est pas continue, il faut nous expliquer comment elle est agencée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Formule()
     
    Dim Plage As Range
     
    Set Plage = Range(Cells(1, 29), Cells(Columns(28).Find("", , , , xlByColumns, xlNext).Row, 29))
     
    With Plage
        .FormulaR1C1 = "=IF(RC[-1]>5,""Oui"",""Non"")"
        .Value = .Value
    End With
     
    Set Plage = Nothing
     
    End Sub

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 31
    Par défaut
    Bonjour,
    Ma plage n'est alors pas continue.
    En faite ma feuille se présente sous forme de tableau que l'on va remplir au fur et à mesure.
    Et je voudrais que des qu'une cellule de la colonne 28 est strictement supérieur à 5, alors la cellule d'à côté qui est dans la colonne 29 devient "OUI" , sinon "NON".
    J'espère être clair ..

    Merci pour votre aide

    Sachant qu'en haut de chaque colonne présente le titre de la colonne

  10. #10
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Par procédure évènementielle peut être

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Target.Column <> 28 Or Target.Row = 1 Then Exit Sub
     
    If Target.Value = "" Or Not IsNumeric(Target.Value) Then
        Target.Offset(0, 1) = ""
        Exit Sub
    End If
     
    If Target.Value > 5 Then
        Target.Offset(0, 1) = "OUI"
    Else
        Target.Offset(0, 1) = "NON"
    End If
     
    End Sub

  11. #11
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
     
     
    If (Target.Column = 28 and Target.Row> 1 and val("" & Target.Value )> 5 Then
        Target.Offset(0, 1) = "OUI"
    Else
        Target.Offset(0, 1) = "NON"
    End If
     
    End Sub

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 31
    Par défaut
    Merci Rdurupt et Joe, vos programmes fonctionnent pour ce que j'ai demandé.
    Cependant, j'ai oublié de préciser que je voulais faire ceci pour plusieurs colonnes, donc le Target.column <> 28 m'ennui un peu..

  13. #13
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    En hybridant nos deux propositions

    tu dois juste indiquer le numero des colonnes dans le "Case 28, 33, 42"
    j'ai ajouté un "Case Else" qui ne sert à rien, c'est juste pour ta compréhension (tu peux supprimer après avoir compris)

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Target.Row = 1 Or Not IsNumeric(Target.Value) Then Exit Sub
     
    Select Case Target.Column
        Case 28, 33, 42
            If Target.Value > 5 Then
                Target.Offset(0, 1) = "OUI"
            Else
                Target.Offset(0, 1) = "NON"
            End If
        ' facultatif, c'est juste pour comprendre
        Case Else
            Exit Sub
        ' fin du facultatif
    End Select
     
    End Sub

  14. #14
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 31
    Par défaut
    Ah merci beaucoup c'est bon ça marche !!

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

Discussions similaires

  1. [VBA] Probleme déclaration de variable
    Par Léponge85 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 11/06/2008, 14h57
  2. probleme requete vba access avec variables
    Par alexkickstand dans le forum VBA Access
    Réponses: 9
    Dernier message: 11/09/2007, 21h19
  3. [VBA-E]Probleme de variable avec Excel
    Par MaMart dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/05/2006, 17h36
  4. [algo]probleme de variables hotes ds un insert
    Par omega dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/03/2004, 09h03
  5. Réponses: 2
    Dernier message: 04/01/2004, 15h14

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