Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Probleme RANGE en VBA

  • Initiateur de la discussion Initiateur de la discussion tydher
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

tydher

XLDnaute Nouveau
Bonjour à tous,

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

Code:
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 à échoué

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 :

Code:
indexX = Cells(1,i)
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:
...
indexG = Cells(1,i).Address
...

Cependant j'en suis toujours au même point.
Erreur : la methode Range de l'objet _globlal a echoué

Votre aide est la bienvenue
 
Re : Probleme RANGE en VBA

La méthode que tu me propose marche, mais en fait au lieu de faire

Code:
Range("A1:L1,M1:M1,BS1:CI1")

Je voudrais faire :

Code:
Range("IndexG:indexCI,IndexK:IndexJ, ...")
 
Re : Probleme RANGE en VBA

Cela ne marche pas. Dans ma boucle quand j'insere une ligne tel que

Code:
For j = 1 To nombreColonne
    entete = Cells(1, j).Value
   
   If (entete = "G") Then
     Set indexG = Cells(1, i)

il me met que l'objet est requis
 
Re : Probleme RANGE en VBA

Bonjour,

pas facile d'analyser des bouts de code jetés sur un post.... place peut être un tout petit fichier avec code complet et expliquant le problème posé...

bon après midi
@+
 
Re : Probleme RANGE en VBA

Voila la partie la plus interessante. Mes variables sont des String
Je souhaite récuperer les en-tete de colonne dans des variables (les adresses d'en tete) et ensuite de defusionner ces en-tete
En commentaire apparait un peu tout ce que j'ai testé

Code:
i = 1
For j = 1 To nombreColonne
    entete = Cells(1, j).Value
   
   If (entete = "G") Then
     indexG = Cells(1, i).Address
     ElseIf (entete = "QTE") Then indexQte = Cells(1, i).Address
     ElseIf (entete = "J") Then indexJ = Cells(1, i).Address
     ElseIf (entete = "CI") Then indexCI = Cells(1, i).Address
     ElseIf (entete = "Engagement") Then indexEngagement = Cells(1, i).Address
     ElseIf (entete = "REMARQUES") Then indexRemarques = Cells(1, i - 1).Address
     ElseIf (entete = "CE") Then indexCE = Cells(1, i).Address
    End If
    i = i + 1
Next j
'------------------------------------------------------------------------
'UNMERGE des cellules de la 1ere ligne
'-----------------------------------------------------------------------
'Range("indexG:indexQte,indexJ:indexJ,indexCI:indexEngagement,indexRemarques:indexCE").Select
'Range(indexG, indexQte).Select
'Range(Cells(indexG), Cells(indexQte)).Select
Set c = Union([indexG:indexQte], [indexJalons:indexJalons], [indexCI:indexEngagement], [indexRemarques:indexCE]).Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Orientation = 0
        .AddIndent = False
        .MergeCells = False
    End With
 
Re : Probleme RANGE en VBA

Ha mais quel génie ça fonctionne.
Il fallait donc changer le type de variable String -> Object et ecrire le "Union Range" comme le proposait Softmama

Merci beaucoup à vous
 
Re : Probleme RANGE en VBA

Pour récapituler j'ai donc :

Code:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
514
Réponses
2
Affichages
520
Réponses
3
Affichages
680
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…