VBA Excel affecter zone variable -> combobox [Résolu/Fermé]

Signaler
-
 Lila_35 -
Bonjour,

Ce bout de code est généré par une macro dans un fichier excel . La zone active se trouve dans une feuille où l'on vient d'importer des données d'un fichier texte.
Le but étant de selectionner une certaine zone d'une colonne en fonction du champ d'une autre colonne.

colonne G = TYPE1
TYPE2
TYPE3
......
TYPE5 (max)

selection dans la colonne A des codes de TYPE1 renvoyé accessible par la combobox.


          
    Dim CurCRASht As Worksheet     
    Dim CurCRAWkb As Workbook       
    Dim aCL As Range
    Dim pTexte As String
    Dim i As Integer

    Set CurCRASht = CurCRAWkb.Sheets("Description")

    CurCRASht.Select
    CurCRASht.Range("G19:G24").Select

i = 1

'probleme de syntaxe pour ce For Each'
For Each CurCRASht.Range("G19:G24") In CurCRASht.Range("G19:G24")

    If CurCRASht.Range.value <> "" Then

        pTexte = CurCRASht.Range.value

        Set aCL = CurCRASht.Cells.Find(What:=pTexte, LookIn:=xlValues, LookAt:=xlPart, _
               SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)

        CurCRASht.Range("A19:A3000").Select
        CurCRASht.Range("A3000").Activate
        CurCRAWkb.Names.Add Name:="CdPr" & i & "", RefersToR1C1:="=Description!" & aCL.Rows & "C1:" & aCL.Rows - 1 & "C1"

    i = i + 1 
    End If

Next


Là, je bloque.

Merci d'avance.

6 réponses

Messages postés
17158
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
29 juillet 2021
10 499
Bonjour,

Effectivement ta boucle For Each... Next ne va pas.
Commence par corriger ça :

For Each c In CurCRASht.Range("G19:G24")
If c.value <> "" Then
pTexte = c.value


etc.


m@rina


Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 166
Bonjour,

Il y a aussi ça :
Set CurCRASht = CurCRAWkb.Sheets("Description")


CurCRAWkb n'est pas déclaré !!!

;o)
Et c tu le déclare en quoi ?
Workbook ou worksheet ?

Merci
as range

Merci m@rina, ça tourne.

Merci à toi Polux31 mais c'était déclaré un peu plus haut.
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 166
Heuuu, si je lis ton code, je vois : Dim CurCRAWkb As Workbook, c'est donc un objet Workbook !!!

Il faut donc faire un truc comme ça :

Set CurCRAWkb = Workbooks("lefichier.xls") 'Si le fichier est déjà ouvert

ou

Set CurCRAWkb = Workbooks.Open("C:\monDossier\lefichier.xls") 'Si le fichier n'est pas ouvert.

Si par "CurCRAWkb" tu voulais désigner le fichier courant (le fichier qui exécute la macro), ce n'est pas nécessaire, il faut faire :

Set CurCRASht = ThisWorkbook.Sheets("Description")


;o)
Re merci pour la précision Polux31.

Ce n'était qu'un bout de code d'un procédure plus longue en amont et le workbook était bien déclaré, y avait juste un souci avec le for each.

J'apprécie l'attention portée.

[Résolu]