boucle?

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

Guest
Salut à tous!!

voilà j'explique:

je suis débutant complet en Vb, j'ai un tableau excel avec des formules (jusque là rien d'extraordinaire...) mais ce tableau contient quelques 1000 lignes (environ). Donc je souhaiterais retranscrire en vb des formules du type:

=IF(AA1<>"";AA1;IF(V1<>"";V1;IF(O1<>"";O1;"")))

en faisant une boucle For...

Comment faire, Svp?

merci d'avance à tous!!
 
A

Abel

Guest
Bonjour zè,

Dans quel but souhaites tu retranscrire tes formules en VBA ?

Tant que les formules sont possibles, ils faut les utiliser.

Si c'est pour un soucis de lenteur, essaie déjà en déactivant le calcul automatique (menu Outils/Options, onglet calcul).

Sinon, dis nous en un peu plus.

Abel
 
Z

Guest
ok je précise:

en fait le nombre de ligne de ma feuille excel varie,
donc à l'heure actuelle, les formules sont recopiées sur environ 8000 lignes.
je souhaite detecter le nombre de ligne ( en utilisant "n = Range("A65536").End(xlUp).Row") pour après faire une boucle et recopier la dizaine de formules sur le nombre de lignes exacte, de façon à diminuer la taille du fichier.

voilà, j'espère que c'est un peu plus clair

merci!
 
A

Attila

Guest
Je c pas si j'ai compris ce que tu veux mais bon... allez je me lance

d'apres ce que j'ai compris tu veux mettre une formule dans chaque cellule
de tes 1000 lignes ?

si c ca je penses que ca ca devrait marcher

Sub test()


Dim Cel As Range

With ActiveSheet
For Each Cel In .Range("A1:A100") 'mets la plage que tu veux
If (Cel.FormulaR1C1 = "") Then
Cel.FormulaR1C1 = "Ta formule" 'entre les "" la formule que tu veux
End If
Next Cel
End With
End Sub

Comme ca ca devrait te coller la formule que tu veux dans les 100 lignes de la A1 a la A100

J'espere pas dire de connerie hein suis loin d'etre un crack avec VBA pour l'instant ^^
 
Z

Guest
en fait je sais pas comment ecrire cette formule:

=IF(AA1<>"";AA1;IF(V1<>"";V1;IF(O1<>"";O1;"")))

qui se trouve dans une cellules de mon tableau...

en vb de facon à boucler sur n lignes
je penser à un truc comme ca mais la syntax ne doit pas etre très bonne....

For i=1 To n
Cel.FormulaR&iC1 =
"=IF(AA&i<>"";AA&i;IF(V&i<>"";V&i;IF(O&i<>"";O&i;"")))"

merci...
 
Z

Guest
en fait voilà ce que j'ai fais, mais en le compilent il me fait une erreur:"invalid or unqualified reference" sur " Range("A1:A"&n)"

Sub test()
n = Range("A65536").End(xlUp).Row 'permet de connaitre le nombre de ligne

Dim Cel As Range

For Each Cel In .Range("A1:A" & n)
If (Cel.FormulaR1C1 = "") Then
Cel.FormulaR1C1 = "=IF(AA1<>"";AA1;IF(V1<>"";V1;IF(O1<>"";O1;"")))"
End If
Next Cel

End Sub

merci pour votre aide!
 
S

salim

Guest
Bonjour Zé, Abel, Attila, et le Forum

Zé peur être une solution pour toi utilise l'enregistreur de macro lance l'enregistrement , et tape ta formule normalement la transcription en VB se fera toute seule ensuite tu regarde dans VBE
.

@+ Salim
 
S

salim

Guest
Re bonjour le Fil et le Forum

Voila ce que j'ai trouvé sur référence incorrecte Zé.

Référence incorrecte ou non qualifiée

Un identificateur commençant par un point n'est valide qu'au sein d'un bloc With. Cause et solution de cette erreur :

L'identificateur commence par un point.
Complétez la qualification de l'identificateur ou supprimez le point.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou sur AIDE (sur Macintosh)
.

Voila j'espère que ça t'aidera.

@+ Salim
 
S

salim

Guest
Re tout le monde

Zé donc si j'ai bien compris y'a pas de problème ce Fil donc tu as créer celui Lien supprimé.
Non vraiment Zé pas faire ce genre de truc ça fait déja assez de remu-ménage comme ça regarde ce Lien supprimé par exemple on a un beau Forum faut le préservé
.

@+ Salim
 
Z

Guest
désolé, je recommencerais plus promis....

en fait je me suis un peu vite enflammé....

voilà le code
im Cel As Range

With ActiveSheet
For Each Cel In .Range("BG1:BG" & n) 'n est le nombre de ligne
If (Cel.FormulaR1C1 = "") Then
Cel.FormulaR1C1 = "=IF(AA"&i"<>"";AA"&i";IF(V"&i"<>"";V"&i";IF(O&i<>"";O"&i";"")))"" 'entre les "" la formule que tu veux
End If
Next Cel
End With

mais j'ai une erreur de syntaxe à la compilation....

?????
 
A

Abel

Guest
Re,

Tu as oublié des & et il y a des guillemets en trop :

"=IF(AA" & i & "<>" & Chr(34) & Chr(34) & ";AA" & i & ";IF(V" & i & "<>" & Chr(34) & Chr(34) & ";V" & i & ";IF(O" & i & "<>" & Chr(34) & Chr(34) & ";O" & i & ";" & Chr(34) & Chr(34) & ")))"

Il y a un autre souci. Je regarde.

A+

Abel
 
A

Abel

Guest
Re,

C'était pourtant pas dur (arf ! c'est pour moi que je le dis) :

"=IF(RC[26]<> " & Chr(34) & Chr(34) & ",RC[26],IF(RC[21]<>" & Chr(34) & Chr(34) & " ,RC[21],IF(RC[14]<>" & Chr(34) & Chr(34) & " ,RC[14], Chr(34) & Chr(34)" & " )))"


Abel
 

Discussions similaires

Statistiques des forums

Discussions
312 764
Messages
2 091 871
Membres
105 084
dernier inscrit
lca.pertus