Amélioration de code VBA avec Offset
Résolu
exceloffset
-
gbinforme Messages postés 15481 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 15481 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Pouvez-vous m’aider à trouver un code VBA pouvant me faciliter celui-ci ?
Dim vCellule As Range
Application.InputBox(Prompt:="Dans la colonne A, sélectionnez les cellules "téléphoné", Type:=8).Select
For each vCellule in selection
vCellule.Offset(0, 48) = vCellule.Offset(0, 33).Value
vCellule.Offset(0, 47) = vCellule.Offset(0, 32).Value
vCellule.Offset(0, 46) = vCellule.Offset(0, 31).Value
vCellule.Offset(0, 45) = vCellule.Offset(0, 30).Value
vCellule.Offset(0, 42) = vCellule.Offset(0, 29).Value
'
'
'...et encore plusieurs lignes
En fait, je cherche à modifier l’emplacement de certaines colonnes dès lors que la cellule B est "téléphone " (en sachant que ces lignes se suivent ; autrement dit, c’est le cas de la ligne 550 à la ligne 950 par exemple).
Je pense que l’idéal serait de faire fonctionner la macro par colonne et non pas par ligne.
Pouvez-vous m’aider à trouver un code VBA pouvant me faciliter celui-ci ?
Dim vCellule As Range
Application.InputBox(Prompt:="Dans la colonne A, sélectionnez les cellules "téléphoné", Type:=8).Select
For each vCellule in selection
vCellule.Offset(0, 48) = vCellule.Offset(0, 33).Value
vCellule.Offset(0, 47) = vCellule.Offset(0, 32).Value
vCellule.Offset(0, 46) = vCellule.Offset(0, 31).Value
vCellule.Offset(0, 45) = vCellule.Offset(0, 30).Value
vCellule.Offset(0, 42) = vCellule.Offset(0, 29).Value
'
'
'...et encore plusieurs lignes
En fait, je cherche à modifier l’emplacement de certaines colonnes dès lors que la cellule B est "téléphone " (en sachant que ces lignes se suivent ; autrement dit, c’est le cas de la ligne 550 à la ligne 950 par exemple).
Je pense que l’idéal serait de faire fonctionner la macro par colonne et non pas par ligne.
A voir également:
- Amélioration de code VBA avec Offset
- Code ascii - Guide
- Code puk bloqué - Guide
- Code de déverrouillage oublié - Guide
- Code activation windows 10 - Guide
- Scanner qr code pc - Guide
2 réponses
Bonjour,
Que veux-tu faire réellement ?
de la ligne 550 à la ligne 950 décaler un certain nombre de colonnes vers la droite ?
Que veux-tu faire réellement ?
de la ligne 550 à la ligne 950 décaler un certain nombre de colonnes vers la droite ?
Bonjour,
Oui c'est bien ça. C'est très simple à faire sans macro mais je suis obligée de l'intégrer à mon code VBA.
Il doit donc sélectionner un certain nombre de colonnes et les décaler vers la droite.
Merci par avance
Oui c'est bien ça. C'est très simple à faire sans macro mais je suis obligée de l'intégrer à mon code VBA.
Il doit donc sélectionner un certain nombre de colonnes et les décaler vers la droite.
Merci par avance
Bonjour,
Oui c'est en l'occurrence 400 lignes mais toutes les colonnes ne sont pas concernées ; je veux par exemple déplacer les colonnes B à E, G, K à L , etc.
Je ne les décale pas forcément de 15 colonnes ; le nouvel emplacement dépend de la colonne en question. 3 colonnes pour le B, 15 pour celles de K à L par exemple.
C'est un déplacement avec effacement de la sélection je pense (sans macro, je fais glisser les cellules vers la droite).
Ce qui me pose problème c'est que ma macro exécute l'action par ligne donc 400 fois la même chose..Alors que ca serait plus rapide par colonne.
Merci par avance et bonne journée
Oui c'est en l'occurrence 400 lignes mais toutes les colonnes ne sont pas concernées ; je veux par exemple déplacer les colonnes B à E, G, K à L , etc.
Je ne les décale pas forcément de 15 colonnes ; le nouvel emplacement dépend de la colonne en question. 3 colonnes pour le B, 15 pour celles de K à L par exemple.
C'est un déplacement avec effacement de la sélection je pense (sans macro, je fais glisser les cellules vers la droite).
Ce qui me pose problème c'est que ma macro exécute l'action par ligne donc 400 fois la même chose..Alors que ca serait plus rapide par colonne.
Merci par avance et bonne journée
Bonjour,
Si j'ai tout compris tu peux le faire ainsi
Tu mets les autres déplacement à la suite, mais attention quand l'on déplace des colonnes leur adressage change.
Si j'ai tout compris tu peux le faire ainsi
Application.InputBox(Prompt:="Dans la colonne A, sélectionnez les cellules ""téléphoné", Type:=8).Select Selection.Offset(0, 10).Resize(Selection.Rows.Count, 2).Cut Destination:=Selection.Offset(0, 25) '15 pour celles de K à L déplacées en Z:AA
Tu mets les autres déplacement à la suite, mais attention quand l'on déplace des colonnes leur adressage change.