VBA Excel affecter zone variable -> combobox

Résolu
Lila_35 -  
 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.
A voir également:

6 réponses

m@rina Messages postés 23911 Date d'inscription   Statut Contributeur Dernière intervention   11 465
 
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


0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour,

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


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

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

Merci
0
Lila_35
 
as range

Merci m@rina, ça tourne.

Merci à toi Polux31 mais c'était déclaré un peu plus haut.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
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)
0
Lila_35
 
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]
0