macro loop ou while

jeanlouisn

XLDnaute Nouveau
bonsoir chers amis exceleurs,
je suis novice en vba, il me faut de suite vous en informer.
Voici mon problème et je serai reconnaissant quiconque pourrait m'aider à le résoudre.

Je souhaite faire un code qui fasse la chose suivante:

- j'ai une feuille vide dans laquelle je compte coller des données en collonne (dans la collonne B)
- sachant cela, je souhaite qu'en collonne A, dans la cellule A1, ma macro inscrive la formule suivante: =OR(B1="a";B1="b";B1="c";B1="d";B1="e";B1="f"),
puis en Cellule A2, celle ci : =OR(B2="a";B2="b";B2="c";B2="d";B2="e";B2="f"), et ainsi de suite dans les cellules A3, A4 et suivantes tant qu'en collonne A on ne rencontre pas (disons) 10 lignes conséqutives vides

Quelqu'un aurait-il une suggestion?
D'avance merci.
JL
 

Staple1600

XLDnaute Barbatruc
Re : macro loop ou while

Bonsoir


Je me permets de te proposer une formule équivalente à la tienne

=OU(CODE(B1)>=97;CODE(B1)<=107)

La macro de recopie
Code:
Sub Macro4()
With Range("A1")
    .FormulaR1C1 = "=OR(CODE(R[]C[1])>=97,CODE(R[]C[1])<=107)"
    .AutoFill Destination:=Range("A2:A18")
End With
End Sub
 
Dernière édition:

Celeborn61

XLDnaute Occasionnel
Re : macro loop ou while

Salut,

Ton soucis, c'est la recopie de formule ???
Avec ta formule, ou celle proposée par Staple1600, c'est automatique, il suffit de recopier la formule, soit par copier / coller, soit par ctrl+b, sot a la souris par la poignée, soit .....
 

Staple1600

XLDnaute Barbatruc
Re : macro loop ou while

RE

Avec While (rempit toutes les cellules vide dans la première colonne
de ligne 1 à la dernière lcellule non vide)

Code:
Sub Test()
For i = 1 To [A65536].End(xlUp).Row
While IsEmpty(Cells(i, 1))
Cells(i, 1).FormulaR1C1 = "=OR(CODE(R[]C[1])>=97,CODE(R[]C[1])<=107)"
Wend
Next
End Sub
 
Dernière édition:

jeanlouisn

XLDnaute Nouveau
Re : macro loop ou while

re-bonsoir Staple1600 et Celeborn61,
et merci pour vos aides rapides.

La solution que tu me propose Staple1600 en tant que formule alternative ne me conviendra pas car j'ai donné les valeurs "a" "b" "c" etc.. comme exemple, mes données sont du texte du type "Nom", "Prenom", "numéro", "Adresse" etc.. donc la fonction =code() ne s'y prête pas.

Celeborn61, mon souci n'est pas la recopie mais plutot l'automatisation de l'écriture de la formule =Or(..) dans toute les Cellule A pour lesquelles la Cellule en B adjascente n'est pas vide.

Il est surement important de préciser que le nombre de valeur que je copierai dans la col B peut varier et peut atteindre 6 à 7 mille lignes. C'est dans un soucis de légerté du fichier que j'en arrive à vouloir faire de l'entrée auto de formule dans la cellule adjascente d'une cellulle non vide, ce tant que je ne rencontre pas 10 cellules non vides.

Pour plus de clareté je vous envoie un fichier en pièce jointe où en collone B j'ai copié des données telle que je les souhaite et en collonne A les formules associées
 

Pièces jointes

  • Book2.zip
    2.3 KB · Affichages: 74
  • Book2.zip
    2.3 KB · Affichages: 68
  • Book2.zip
    2.3 KB · Affichages: 57

Staple1600

XLDnaute Barbatruc
Re : macro loop ou while

Re

Code:
Sub Test()
For i = 1 To [A65536].End(xlUp).Row
While IsEmpty(Cells(i, 2))
Cells(i, 1).FormulaR1C1 = _
 "=OR(RC[1]=""a"",RC[1]=""b"",RC[1]=""c"",RC[1]=""d"",RC[1]=""e"",RC[1]=""f"")"
Wend
Next
End Sub
 
Dernière édition:

jeanlouisn

XLDnaute Nouveau
Re : macro loop ou while

Merci encore et encore pour ton aide,

Désolé de n'avoir pas été si clair au début, c'était dans un soucis de simplicité mais malheureusement j'ai raté mon but.

Ton code semble fonctionner parfaitement mais serait il possible d'y ajouter la condition des 10 lignes vides qui stopperait l'écriture de la formule? Ceci car il se peut avec mes données que j'aie entre 3 et 9 lignes consécutives vides et qu'à la suite me données reprennent...

Si tu as une meilleure idée je te remercie de me la faire savoir, d'autant qu'avec la solution étudiée jusqu'ici et pour laquelle tu m'es d'une grande aide, les ressources utilisées par excel sont passablement grandes

D'avance merci
JL
 

Discussions similaires

Réponses
7
Affichages
361
Réponses
0
Affichages
255

Statistiques des forums

Discussions
312 504
Messages
2 089 073
Membres
104 019
dernier inscrit
pascal la