boucl excel?

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

couette

Guest
est il possible de faire une boucle avec excel?


EX: mon resulta serra dans la colone A

si ma colone B est vide je passe la la colone C si elle est vide je passe a la D ....
si ma colone E est rempli alor ma colone A egal a ma colone E et je m'arete .
Merci de votre aide
 

ZZR09

XLDnaute Occasionnel
Bonjour Couette, le forum

Au total, combien y a t-il de colonnes qui pourraient être testées?
Je verrai bien plusieurs fonctions SI imbriquées mais, leur nombre est limiré et ça devient très vite super 'lourd'.

Par contre En VBA (macro), c'est faisable et assez simplement

A+
 

ZZR09

XLDnaute Occasionnel
Salut Couette,

ci joint un fichier avec un gros bouton lançant la macro.
Ci dessous le code utilisé

Le principe de la macro est le suivant:
1 : récupérer le nombre de colonnes et de lignes à traiter
2 : vérifier (par ligne) pour chacune des cellules de cette matrice si elle contient quelque chose. Si c'est le cas, elle le copie dans la première colonne de la ligne en cours.

ça fonctionne mais c'est encore perfectible : il faidrait que Visual Basic calcule tout seul ne nombre de lignes et de colonnes à traiter.

c'est du genre range('A1:' & range(A1).end(xltoright)
mais je n'ai pas réussi...

Code :
Sub Recuperer_donnee2()
Dim i As Range
Dim maxlign, lign, col As Integer
col = InputBox('Donner le nombre de colonnes maximum à traiter', 'Colonnes', '18', vbOKOnly)
maxlign = InputBox('Donner le nombre de lignes maximum à traiter', 'Lignes', '10000', vbOKOnly)

Range('A1').Select
Range(Cells(1, 1), Cells(maxlign, 1)).Select 'Réinitialiser le projet
Selection.ClearContents
Range('A1').Select

For lign = 1 To maxlign ' de la première ligne à la 10000ème
For Each i In Range(Cells(lign, 1), Cells(lign, col))
If i.Value <> '' Then Cells(lign, 1) = i.Value
Next i
Next lign

End Sub


Enfin, pour faire simple : la macro (alt+F11 puis double clic sur modules) et le bouton peuvent être copiés dans une autre classeur; ça fonctionnera.


A+
;)
[file name=selectdonnee.zip size=9566]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/selectdonnee.zip[/file]
 

Pièces jointes

  • selectdonnee.zip
    9.3 KB · Affichages: 12

excalibur

XLDnaute Impliqué
bonjour couette , ZZR09 le forum Sub Macro1()
Dim cell As Range
if [b1:iv1]='' then exit sub
Range('a1').Select
Selection.End(xlToRight).Select
ActiveCell.EntireColumn.Copy
Range('a1').Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range('a1').Select
End Sub' salutations
 

ZZR09

XLDnaute Occasionnel
Attention, Couette,

les deux codes que tu as ici ne font pas du tout la même chose:
celui d'Excalibur copie la colonne complète ...
et après avoir relu ton premier message, c'est ce que tu demandes.

le mien fonctionne par lignes endépendantes les unes des autres sur l'ensemble de colonnes.
Après relecture, je suis certainement Hors-sujet :(
Désolé

Au passage, Excalibur, peux tu me dire à quoi correspond
[b1:iv1]

Merci

A+
 

Statistiques des forums

Discussions
312 332
Messages
2 087 365
Membres
103 528
dernier inscrit
maro