Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/06/2011, 09h56   #1
Invité de passage
 
Inscription : juin 2011
Messages : 9
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 9
Points : 0
Points : 0
Par défaut Imbrication FOR et IF dans VBA

Bonjour,

J'ai un petite fonction qui doit parcourir les cellules d'une colonnes, de tester si elles sont vides et de copier leur valeurs dans une combobox dans le cas contraire.
Le problème c'est que je suis plus familier avec les synthaxes de codage en langage C et je pense que l'imbrication du FOR et du IF que j'ai faite ne marche pas. En effet il m'affiche un message d'erreur.

Mon code :

Code :
1
2
3
4
5
6
7
8
9
10
 
For i = 70 To 65536
 
    If Sheets("Feuil1").Cells(i, 1).Value <> "" Then _
        With Assemble_Combox
         .AddItem Sheets("Feuil1").Cells(i, 1).Value
        End With
    End If
 
Next i
Merci de me dire si c'est la bonne façon de l'écrire ou pas.
klemsy20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 10h41   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 885
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 885
Points : 7 151
Points : 7 151
Bonjour

Pour moi, le With est en trop car seule ligne y fait appel.

Pour le reste RAS

Code :
1
2
3
4
5
6
7
8
 
For i = 70 To 65536
 
    If Sheets("Feuil1").Cells(i, 1).Value <> "" Then 
         Assemble_Combox.AddItem Sheets("Feuil1").Cells(i, 1).Value
    End If
 
Next i
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 10h46   #3
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonjour
Tu y étais presque
Code :
If condition then instruction
ou
Code :
1
2
3
if condition then
    instructions
end if
Pour ton cas, il faut se limiter à la partie utile (sinon, le temps d'exécution sera énorme)
Code :
1
2
3
4
5
6
7
8
9
10
Dim LastLig As Long
 
With Sheets("Feuil1")
    LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
    If LastLig >= 70 Then
        For i = 70 To LastLig
            If .Cells(i, 1).Value <> "" Then Assemble_Combox.AddItem .Cells(i, 1).Value
        Next i
    End If
End With
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 10h50   #4
Membre éprouvé
 
Homme Franck PRESSE
Inscription : août 2010
Messages : 202
Détails du profil
Informations personnelles :
Nom : Homme Franck PRESSE
Âge : 38
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : août 2010
Messages : 202
Points : 444
Points : 444
Bonjour,
Si le message d'erreur que tu obtiens est :
Citation:
erreur de compilation
end if sans bloc if
c'est du à la présence inopportune du caractère : _ après Then.
En VBA, ce signe n'intervient que pour aller à la ligne dans une longue ligne de code. Donc Si tu écris :
Code :
1
2
 If Sheets("Feuil1").Cells(i, 1).Value <> "" Then _
        With Assemble_Combox
cela équivaut à :
Code :
If Sheets("Feuil1").Cells(i, 1).Value <> "" Then With Assemble_Combox
Ou alors ce signe n'est apparu que dans le copié collé de ton code et je viens de faire une longue réponse inutile...
__________________
Cordialement,
Franck P.


Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...
pijaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h08.


 
 
 
 
Partenaires

Hébergement Web