• Initiateur de la discussion Initiateur de la discussion couette
  • 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 !

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
 
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+
 
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

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
 
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+
 
- 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

  • Question Question
Microsoft 365 couleurs
Réponses
12
Affichages
508
Réponses
2
Affichages
307
Réponses
1
Affichages
374
Réponses
1
Affichages
371
Réponses
6
Affichages
342
Retour