Créer une boucle
CMinou2303
Messages postés
4
Statut
Membre
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Je débute en VBA, malheureusement je suis actuellement bloquée. Je pense que je déclare mal mes variables mais je dois avouer que c'est une partie que je ne comprends pas beaucoup…
Je vous explique :
J'ai un fichier avec plusieurs colonnes (c'est une extraction faite à partir d'un PGI).
La macro que je souhaite créer a pour but de :
Récupérer les informations de la colonne B et de les coller dans la colonne A. (la macro ne doit couper/coller que les cellules non vides car je dois garder les informations de la colonne A). Si la cellule est vide on passe à la suite jusqu'à la fin du tableau.
Puis supprimer la colonne B.
J'aimerai créer une boucle qui me permette de la faire et c'est là que je bloque. mon code fonctionne pour le copier coller mais seulement pour la ligne 2.
Je n'ai pas réussi à joindre de fichier excel donc je vous ai mis la capture d'écran du fichier dans l'espoir que cela vous aide à mieux visualiser.

Je vous remercie pour votre aide.
Bien cordialement,
Je débute en VBA, malheureusement je suis actuellement bloquée. Je pense que je déclare mal mes variables mais je dois avouer que c'est une partie que je ne comprends pas beaucoup…
Je vous explique :
J'ai un fichier avec plusieurs colonnes (c'est une extraction faite à partir d'un PGI).
La macro que je souhaite créer a pour but de :
Récupérer les informations de la colonne B et de les coller dans la colonne A. (la macro ne doit couper/coller que les cellules non vides car je dois garder les informations de la colonne A). Si la cellule est vide on passe à la suite jusqu'à la fin du tableau.
Puis supprimer la colonne B.
J'aimerai créer une boucle qui me permette de la faire et c'est là que je bloque. mon code fonctionne pour le copier coller mais seulement pour la ligne 2.
Sub Tranférer()
Dim numéro As Integer
numéro = 2
Dim cellule As Range
For Each cellule In Selection
If Not IsEmpty(Range("B2")) Then
Range("B2").Select
Selection.Cut
Range("A2").Select
ActiveSheet.Paste
End If
Next
End Sub
Je n'ai pas réussi à joindre de fichier excel donc je vous ai mis la capture d'écran du fichier dans l'espoir que cela vous aide à mieux visualiser.
Je vous remercie pour votre aide.
Bien cordialement,
A voir également:
- Créer une boucle
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Créer une adresse hotmail - Guide
- Créer un lien pour partager des photos - Guide
- Créer une liste déroulante excel - Guide
2 réponses
Bonjour,
Think different... Si dans chaque ligne, soit la colonne A soit la colonne B est renseignée (mais jamais les deux), insère une colonne C où tu mets une formule =CONCATENER(A2;B2). Ensuite, tu fais un copier/coller valeurs en colonne A et supprimes les colonnes B et C.
Sinon, pour faire une boucle (For, While,...), il faut veiller à boucler le bon nombre de fois (ni trop peu, ni trop). Ici tu n'exécutes la boucle que n fois (n=nombre de cellules sélectionnées) suivant la syntaxe :
A+
Think different... Si dans chaque ligne, soit la colonne A soit la colonne B est renseignée (mais jamais les deux), insère une colonne C où tu mets une formule =CONCATENER(A2;B2). Ensuite, tu fais un copier/coller valeurs en colonne A et supprimes les colonnes B et C.
Sinon, pour faire une boucle (For, While,...), il faut veiller à boucler le bon nombre de fois (ni trop peu, ni trop). Ici tu n'exécutes la boucle que n fois (n=nombre de cellules sélectionnées) suivant la syntaxe :
For Each cellule In Selection
A+
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour, peut-être ainsi:
Dim cellule As Range, col2 As Range
Set col2 = Intersect(Selection, ActiveSheet.Columns(2))
If Not col2 Is Nothing Then
For Each cellule In col2
If Not IsEmpty(cellule) Then
cellule.Offset(0, -1).Value = cellule.Value
cellule.Value = ""
End If
Next
End If