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 :

(InputBox) comment lui faire comprendre que la valeur "G" = colonne G ? [XL-2000]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut (InputBox) comment lui faire comprendre que la valeur "G" = colonne G ?
    Bonjour,

    Suite à mon message précédent, j'aimerais améliorer ma macro pour qu'elle soit la plus intuitive possible, afin que n'importe qui de mes collègues puisse l'utiliser

    Voilà mes modifs :

    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
    Sub z_Découpage_si_plus_de_60_chèques()
    Worksheets(2).Activate
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Dim a, b, c, d As Range
    d = InputBox("Dans quelle colonne se trouvent la quantité de chèques ? (ex.: colonne G = G ou g)")
    For Each c In Range(d)
    If c >= 61 Then
    a = c.Row
    b = c.Value
    Rows(a).Copy
    Rows(a).Insert shift:=xlDown
    c.Offset(-1) = 60
    c = b - 60
    End If
    Next c
    Range("A1").Select
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    End Sub
    Comment lui faire comprendre que si je mets G ou g, c'est égal à la colonne G ??

    Merci par avance

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

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

    range designe une cellule ou une plage de cellule

    essaye avec columns

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each c In Columns(d)
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  3. #3
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Bonjour,

    j'ai fait la modif mais ça ne fonctionne pas

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    re

    en fait j'ai repris ton code, regarde bien les commentaires que j'ai ajoutés car j'ai été obligé de faire des supositions

    à adapter
    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
    Sub z_Découpage_si_plus_de_60_chèques()
    Worksheets(2).Activate
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Dim a As Long, c As Range, d As String 'modif chaque variable doit être typé
    Dim b As Variant ' le type dépend de ce qu'il y a dans les cellules ?
    d = InputBox("Dans quelle colonne se trouvent la quantité de chèques ? (ex.: colonne G = G ou g)")
    For Each c In Range(d)
      If c.Value >= 61 Then ' modif C.value j'ai suposé que c'est la valeur
        a = c.Row
        b = c.Value
        Rows(a).Copy
        Rows(a).Insert shift:=xlDown
        c.Offset(-1, 0) = 60 'modif offset (ligne,colonne)j'ai supposé que c'était ligne-1
        c.Value = b - 60
      End If
    Next c
    Range("A1").Select
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    End Sub
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    salut

    dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim a, b, c, d As Range
    seule d est typée, est l'est en Range !
    Type donc d en string, puis regarde ce que fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range(d & ":" & d ).select
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox range(d & ":" & d).address
    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim plage As Range
    Set plage = Range(d & ":" & d)
    for each c in plage
    'etc...
    PS c doit être typé en range.

  6. #6
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Merci à vous ça fonctionne !!

    Voici le 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
    Sub z_Découpage_si_plus_de_60_chèques()
    Worksheets(2).Activate
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Dim a As Long, c As Range, d As String
    Dim b As Variant
    Dim plage As Range
    d = InputBox("Dans quelle colonne se trouvent la quantité de chèques ? (ex.: colonne G = g) (toujours en minuscule)")
    Set plage = Range(d & ":" & d)
    For Each c In plage
      If c.Value >= 61 Then
        a = c.Row
        b = c.Value
        Rows(a).Copy
        Rows(a).Insert shift:=xlDown
        c.Offset(-1, 0) = 60
        c.Value = b - 60
      End If
    Next c
    Range("A1").Select
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    End Sub

    J'aurais une autre petite question s'il vous plaît :

    Étant donné que je vais intégrer cette macro dans un bouton, comment faire pour qu'au début on demande à l'utilisateur de sélectionner le fichier à traiter ?

  7. #7
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    J'ai réussi à trouver la solution :

    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
    Option Explicit
     
    Private Sub CommandButton1_Click()
    Dim OuvrirFichiers As Variant
    ChDir ("c:\")
    OuvrirFichiers = Application.GetOpenFilename(filefilter:="Classeur Microsoft Excel (*.xls),*.xls", filterindex:=2, MultiSelect:=False)
    If OuvrirFichiers = False Then
    MsgBox "Aucun fichier n'a été sélectionné. Fin de la procédure", vbOKOnly + vbCritical, "Fin de la procédure"
    Exit Sub
    End If
    Workbooks.Open Filename:=OuvrirFichiers
    Dim a As Long, c As Range, d As String
    Dim b As Variant
    Dim plage As Range
    d = InputBox("Dans quelle colonne se trouvent la quantité de chèques ? (ex.: colonne G = g) (toujours en minuscule)")
    Set plage = Range(d & ":" & d)
    For Each c In plage
      If c.Value >= 61 Then
        a = c.Row
        b = c.Value
        Rows(a).Copy
        Rows(a).Insert shift:=xlDown
        c.Offset(-1, 0) = 60
        c.Value = b - 60
      End If
    Next c
    End Sub
    Par contre maintenant il ne fait plus le découpage (il ne m'affiche même pas un message d'erreur en plus)

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    re

    après ouverture du nouveau classeur tu n'effectué pas le traitement dessus mais sur le classeur actif.

    code modifié et testé
    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
    Option Explicit
     
    Private Sub CommandButton1_Click()
    Dim OuvrirFichiers As Variant
    Dim a As Long, c As Range, d As String
    Dim b As Variant
    Dim plage As Range
    Dim nomfichier As String
    ChDir ("c:\")
    OuvrirFichiers = Application.GetOpenFilename(filefilter:="Classeur Microsoft Excel (*.xls),*.xls", FilterIndex:=2, MultiSelect:=False)
    If OuvrirFichiers = False Then
      MsgBox "Aucun fichier n'a été sélectionné. Fin de la procédure", vbOKOnly + vbCritical, "Fin de la procédure"
      Exit Sub
    End If
    Workbooks.Open Filename:=OuvrirFichiers
    nomfichier = Right(OuvrirFichiers, Len(OuvrirFichiers) - InStrRev(OuvrirFichiers, "\"))
    d = InputBox("Dans quelle colonne se trouvent la quantité de chèques ? (ex.: colonne G = g) (toujours en minuscule)")
    'pour travailler avec le classeur ouvert
    With Workbooks(nomfichier).Worksheets("cahier") 'le nom de la feuille est à adapter
      Set plage = .Range(d & ":" & d)
      For Each c In plage
        If c.Value >= 61 Then
          a = c.Row
          b = c.Value
          .Rows(a).Copy
          .Rows(a).Insert shift:=xlDown
          c.Offset(-1, 0) = 60
          c.Value = b - 60
        End If
      Next c
    End With
    End Sub
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  9. #9
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Excellent ça fonctionne !!

    Merci !!!!!

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 21/01/2011, 00h19
  2. Réponses: 10
    Dernier message: 23/10/2006, 09h43
  3. Réponses: 6
    Dernier message: 25/08/2006, 15h16
  4. Portsentry, comment lui faire envoyer un mail ?
    Par baali_hacene dans le forum Réseau
    Réponses: 3
    Dernier message: 19/04/2006, 19h06
  5. ClassWizard --> comment lui faire reconnaitre mes classes
    Par bigboomshakala dans le forum MFC
    Réponses: 6
    Dernier message: 06/05/2004, 10h50

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