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 :

Probleme erreur avec le RANGE [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    Par défaut Probleme erreur avec le RANGE
    Bonjour à tous.

    Apres avoir recuperer des valeurs dans mes variables je souhaite faire un traitement en utilisant un Range :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Range("indexG:indexQte,indexJalons:indexJalons,indexCI:indexRemarques-1,indexI:indexCE+1").Select 
        With Selection 
            .HorizontalAlignment = xlCenter 
            .VerticalAlignment = xlCenter 
            .Orientation = 0 
            .AddIndent = False 
            .MergeCells = False 
        End With


    Cependant, il ne marche pas et j'ai une erreur de type :
    La methode Range de l'objet Global à écoué

    Merci

  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
    indexG c'est une variable, c'est ça? de quel type et quelle est sa valeur (adresse de cellule, ou n° de colonne)
    Précise

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim IndexG As String, IndexQte As String
     
    IndexG = "B1"
    IndexQte = "L34"
    With Sheets("Feuil1").Range(IndexG & ":" & IndexQte)
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Orientation = 0
        .AddIndent = False
        .MergeCells = False
    End With

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par défaut range
    bonjour,

    d'une manière générale Range s'utilise de la façon suivante par exemple :
    il faudrait plus de détails sur vos besoins pour exprimer la bonne syntaxe dans votre cas

  4. #4
    Membre très actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    Par défaut
    Merci pour vos réponses.

    Mes variables sont de types integer.

    Le but serai en fait de faire la dé-fusion des cellules, qui par défaut sont fusionnées dans ma feuille Excel.

    En fait, pour apporter plus de détails, avant le Range, j'ai une boucle qui me récupere le numéro de la colonne, car selon les feuilles Excel, les colonnes ne sont pas aux mêmes endroits.

    Il faudrait donc que j'associe la cellule A1, par exemple, à ma variable indexX.
    Sauf que si je fait :

    l'index récupere ce qui se trouve dans la cellule et non l'emplacement

    J'ai modifié le type de mes variables en String et j'ai rajouté dans ma boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    indexG = Cells(1,i).Address
    ...
    Cependant j'en suis toujours au même point.
    Erreur : la methode Range de l'objet _globlal a echoué

  5. #5
    Membre très actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    Par défaut
    Mes variables sont au final de type Object et mon 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
    24
    25
    26
    i = 1
    For j = 1 To nombreColonne
        entete = Cells(1, j).Value
     
       If (entete = "G") Then
        set  indexG = Cells(1, i)
         ElseIf (entete = "QTE") Then set indexQte = Cells(1, i)
         ElseIf (entete = "J") Then set  indexJ = Cells(1, i)
         ElseIf (entete = "CI") Then set indexCI = Cells(1, i)
         ElseIf (entete = "Engagement") set Then indexEngagement = Cells(1, i)
         ElseIf (entete = "REMARQUES") set Then indexRemarques = Cells(1, i - 1)
         ElseIf (entete = "CE") Then set indexCE = Cells(1, i)
        End If
        i = i + 1
    Next j
    '------------------------------------------------------------------------
    'UNMERGE des cellules de la 1ere ligne
    '-----------------------------------------------------------------------
    Union(Range(indexG, indexQte), Range(indexJ, indexJ), Range(indexCI, indexEngagement), Range(indexRemarques, indexCE)).Select
    With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .Orientation = 0
            .AddIndent = False
            .MergeCells = False
        End With

  6. #6
    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
    Le but final est quoi?
    jusqu'à maintenant, tu n'as pas expliqué le but.

    Sinon, sans conviction, essaie ce code (adapte le nom de la feuille):
    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
    Public Sub Test()
    Dim Tb As Variant, Res() As String
    Dim i As Integer, k As Integer
    Dim c As Range
     
    Tb = Array("G", "QTE", "J", "CI", "Engagement", "REMARQUES", "CE")
     
    With Sheets("Feuil1")                            ' à adapter
        For i = LBound(Tb) To UBound(Tb)
            Set c = .Rows(1).Find(Tb(i), LookIn:=xlValues, lookat:=xlWhole)
            k = k + 1
            ReDim Preserve Res(1 To k)
            Res(k) = IIf(i = 5, c.Offset(0, -1).Address, c.Address)
            Set c = Nothing
        Next i
        With Union(.Range(Res(1), Res(2)), .Range(Res(3)), .Range(Res(4), Res(5)), .Range(Res(6), Res(7)))
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .Orientation = 0
            .AddIndent = False
            .MergeCells = False
        End With
    End With
    End Sub
    PS: Etranges quand même ces 2lignes (simplement fautes de frappe):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         ElseIf (entete = "Engagement") set Then indexEngagement = Cells(1, i)
         ElseIf (entete = "REMARQUES") set Then indexRemarques = Cells(1, i - 1)

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

Discussions similaires

  1. Probleme & erreur avec lsqcurvefit
    Par AgentR dans le forum MATLAB
    Réponses: 4
    Dernier message: 20/09/2013, 10h17
  2. Probleme message erreur avec Indy - Email
    Par Chyokyka dans le forum Débuter
    Réponses: 4
    Dernier message: 24/03/2008, 19h35
  3. [AJAX] Erreur 404 avec Ajax
    Par GuileIzback dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/01/2007, 12h58
  4. Probleme de compilation,erreur avec SAXParser
    Par makohsarah dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 07/01/2007, 15h35
  5. Probleme: erreur avec CreateFile("COM1",..)
    Par zandoli dans le forum Windows
    Réponses: 1
    Dernier message: 11/10/2006, 16h00

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