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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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!!
 
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
 
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!
 
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 ^^
 
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...
 
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!
 
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
 
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
 
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
 
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....

?????
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
480
Retour