VBA Excel affecter zone variable -> combobox

Résolu/Fermé
Lila_35 - 17 juin 2009 à 12:08
 Lila_35 - 17 juin 2009 à 14:39
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 20065 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 23 avril 2024 11 271
17 juin 2009 à 13:33
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 mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 juin 2009 à 13:51
Bonjour,

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


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

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

Merci
0
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 mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 juin 2009 à 14:24
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
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