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 :

Etrangetées sur select [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 6
    Par défaut Etrangetées sur select
    hello le forum !

    j'ai un p'tit souci :
    Je travail sur plusieurs classeurs à la fois dans ma macro, mais la voici

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
     
    Dim nom_FPD As String 'nom du classeur contenant le fichier FPD
     
    Dim nom_outils_devis As String
     
    Dim col_tab_fin As Integer
     
    Dim L_tab_fin As Integer
     
    Dim L_tab As Integer
     
    Dim col_ordre As Integer
     
    Dim col_annee_FPD_2 As Integer
     
    Dim annee_FPD_2 As Long
     
    Dim NbOrdonne As Integer
     
     
    nom_outils_devis = "devis_1.xlsm"
     
     
    nom_FPD = "ref__1.xlsx"
     
     
     
     
    annee_FD_2 = annee_FPD(nom_FPD) 'appel d'une fonction
     
    col_tab_fin = Workbooks("Table de conversion.xlsm").Worksheets("Feuil1").Cells(2, 1).End(xlToRight).Column
     
    col_annee_FD_2 = col_annee_FPD((col_tab_fin), (nom_FPD), (annee_FPD_2)) 'appel de fonction
     
    L_tab_fin = Workbooks("Table de conversion.xlsm").Worksheets("Feuil1").Cells(39, col_annee_FPD_2).End(xlUp).Row 
    NBservices = L_tab_fin
     
    NbOrdonne = 0
     
     
     
    For L_tab = 2 To L_tab_fin
     
        If Workbooks("Table de conversion.xlsm").Worksheets("Feuil1").Cells(L_tab, col_tab_fin + 1) = Empty Then
     
        Else
     
            NbOrdonne = NbOrdonne + 1
     
            col_ordre = Workbooks("Table de conversion.xlsm").Worksheets("Feuil1").Cells(L_tab, col_tab_fin + 1).Value
     
            Workbooks(nom_outils_devis).Worksheets("Feuil1").Cells(13, col_ordre).Value = Workbooks("Table de conversion.xlsm").Worksheets("Feuil1").Cells(L_tab, col_tab_fin).Value
     
     
            Workbooks(nom_outils_devis).Worksheets("Feuil1").Range(Cells(13, col_ordre), Cells(14, col_ordre)).Select
     
            Columns(col_ordre).ColumnWidth = 20
     
            Selection.Font.Size = 12
     
            Selection.Merge       
     
        End If
     
    Next L_tab
    Bizarrement, quand je l'ai écrite, tout fonctionnait bien, plusieurs fois avec réinitialisation des classeurs. J'ai fermé tout mes classeurs, je les ai réouvert tels qu'ils était, et la macro s'arretait sur la ligne avec le select, avec pour erreur : '1004' ereur définie par l'application ou par l'objet.
    Grâce à ce forum, modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Workbooks(nom_outils_devis).Worksheets("Feuil1").Range(Cells(13, col_ordre), Cells(14, col_ordre)).Select
     
            Columns(col_ordre).ColumnWidth = 20
     
            Selection.Font.Size = 12
     
            Selection.Merge
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Workbooks(nom_outils_devis).Worksheets("Feuil1").Range(Cells(13, col_ordre), Cells(14, col_ordre)).font.size=12
    Workbooks(nom_outils_devis).Worksheets("Feuil1").Range(Cells(13, col_ordre), Cells(14, col_ordre)).merge
            Columns(col_ordre).ColumnWidth = 20
    sans plus de résultat, malgré que ma macro ai fonctionnée accordément à mon code avant la fermeture des classeurs.

    autre petite question : faut il toujrs déclarer la variable du compteur dans une boucle for par ex, en sachant que je n'aurais jamais besoin d'un long par ex ?

    Je suis pas très douée en vba, je débute un peu mais je ne comprend pas trop l'erreur

    qq'un pour m'aider svp ?

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pour formaliser ton code, tu as la possibilité de tavailler avec des variables objets de type Workbook et Worksheet

    Pour le Select, plus besoin (On ne cesse de le répéter)

    Pour ta correction que tu as étalé, il fallait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(nom_outils_devis).Worksheets("Feuil1").Range(Workbooks(nom_outils_devis).Worksheets("Feuil1").Cells(13, col_ordre), Workbooks(nom_outils_devis).Worksheets("Feuil1").Cells(14, col_ordre)).font.size=12
    Ou en utilisant With/ End With
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            With Workbooks(nom_outils_devis).Worksheets("Feuil1")
                .Cells(13, col_ordre).Value = Workbooks("Table de conversion.xlsm").Worksheets("Feuil1").Cells(L_tab, col_tab_fin).Value
                With .Range(.Cells(13, col_ordre), .Cells(14, col_ordre))
                    .Font.Size = 12
                    .Merge
                End With
            End With

  3. #3
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut etrangetes sur select
    bonjour Mercatog,

    j'étais en train d'écrire quand ta réponse est survenue.

    pour ma gouverne, ne faut-il pas que Bricko déclare:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim nom_outils_devis As workbooks
    et plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set nom_outils_devis = "devis_1.xlsm"
    cordialement

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Citation Envoyé par nibledispo Voir le message
    pour ma gouverne, ne faut-il pas que Bricko déclare:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim nom_outils_devis As workbooks
    et plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set nom_outils_devis = "devis_1.xlsm"
    cordialement

    Non non, c'est pas comme ça.

    1. déclarer As WorkBook (et non As WorkBooks)
    2. tu essaies d'affecter un string ("devis_1.xlsm") à une variable objet

    Un exemple pour illustrer
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    '.....
    Dim WbkTab As Workbook, WbkDev As Workbook
    Dim WsTab As Worksheet, WsDev As Worksheet
     
    '....
     
    'Les fichiers doivent au préalable être ouverts dans la même instance
    Set WbkTab = Workbooks("Table de conversion.xlsm")
    Set WsTab = WbkTab.Worksheets("Feuil1")
     
    With WsTab
        Col_Tab_Fin = .Cells(2, 1).End(xlToRight).Column
        Col_Annee_FD_2 = col_annee_FPD((Col_Tab_Fin), (Nom_FPD), (Annee_FPD_2))    'appel de fonction
        L_Tab_Fin = .Cells(39, Col_Annee_FPD_2).End(xlUp).Row
        NBservices = L_Tab_Fin
     
        Set WbkDev = Workbooks(Nom_Outils_Devis)
        Set WsDev = WbkDev.Worksheets("Feuil1")
        For L_Tab = 2 To L_Tab_Fin
     
            If .Cells(L_Tab, Col_Tab_Fin + 1) <> "" Then
                NbOrdonne = NbOrdonne + 1
                Col_Ordre = .Cells(L_Tab, Col_Tab_Fin + 1).Value
                With WsDev
                    .Cells(13, Col_Ordre).Value = WsTab.Cells(L_Tab, Col_Tab_Fin).Value
                    With .Range(.Cells(13, Col_Ordre), .Cells(14, Col_Ordre))
    'ou bien
                   'With .Cells(13, Col_Ordre).Resize(2,1)
                        .Font.Size = 12
                        .Merge
                    End With
                End With
            End If
        Next L_Tab
    End With
     
    Set WsTab = Nothing
    Set WsDev = Nothing
    Set WbkTab = Nothing
    Set WbkDev = Nothing

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

Discussions similaires

  1. Info bulle sur SELECT
    Par Maxbenji dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 14/09/2007, 11h47
  2. trigger sur select
    Par Monstros Velu dans le forum Développement
    Réponses: 1
    Dernier message: 05/04/2006, 12h34
  3. Déclenchement sur select
    Par sdinot dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 02/04/2004, 11h52
  4. Trigger sur select
    Par bilo2000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/02/2004, 13h39
  5. question sur SELECT ...WHERE...IN
    Par danseur dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/01/2004, 15h23

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