[VBA Exc]Copier rect. de cases avec 1variable
Fritz
-
Ivan-hoe Messages postés 433 Date d'inscription Statut Membre Dernière intervention -
Ivan-hoe Messages postés 433 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un souci dans mon programme VBA Excel avec lequel je dois editer un facture.
Ma facture est composé de plusieurs ligne, 1 pour chaque produit, et de 4 colonnes (prix, reférence...)
Si j'ai par exemple 3 produits différents (1 dans chaque ligne), et que je supprime le 1er, j'aimerai que les 2 autres montent d'un cran pour ne pas laissé d'espace vide.
Pour cela, j'ai crée une variable MC sur la ligne de la pièce supprimé, dans la colonne la plus à gauche de ma facture.
Cette variable est dans l'exemple sur la ligne la plus haute de mon tableau (A27), mais pourrait aller jusqu'a (A37) dans le cas ou on supprimme la 2eme, 3eme ou 4eme etc. ligne de ma facture.
J'aimerai donc couper un rectangle de cellules à partir de la ligne en dessous de MC jusqu'à E37 (E37 est le coin en bas a droite de ma facture, je l'ai choisis pour déplacer toute ma commande vers le haut et ne pas laissé de ligne vide entre 2 produit), pour déplacer le tout 1 case plus haut.
Mais je ne sais ni comment sélectionner un rectangle de cellules avec une variable et une coordonnée de case
Du type
---Dim variable as range
---Set variable = Range("MC.Offset(1,0);E37") 'ceci ne marche pas
Ou si mon rectangle va de la case MC à E37
---Set variable = Range("MC;E37") 'ceci ne marche pas
ni comment copier,couper et coller un rectangle de cellules avec VBA.
Pouvez vous m'aider?
Merci
Fritz
j'ai un souci dans mon programme VBA Excel avec lequel je dois editer un facture.
Ma facture est composé de plusieurs ligne, 1 pour chaque produit, et de 4 colonnes (prix, reférence...)
Si j'ai par exemple 3 produits différents (1 dans chaque ligne), et que je supprime le 1er, j'aimerai que les 2 autres montent d'un cran pour ne pas laissé d'espace vide.
Pour cela, j'ai crée une variable MC sur la ligne de la pièce supprimé, dans la colonne la plus à gauche de ma facture.
Cette variable est dans l'exemple sur la ligne la plus haute de mon tableau (A27), mais pourrait aller jusqu'a (A37) dans le cas ou on supprimme la 2eme, 3eme ou 4eme etc. ligne de ma facture.
J'aimerai donc couper un rectangle de cellules à partir de la ligne en dessous de MC jusqu'à E37 (E37 est le coin en bas a droite de ma facture, je l'ai choisis pour déplacer toute ma commande vers le haut et ne pas laissé de ligne vide entre 2 produit), pour déplacer le tout 1 case plus haut.
Mais je ne sais ni comment sélectionner un rectangle de cellules avec une variable et une coordonnée de case
Du type
---Dim variable as range
---Set variable = Range("MC.Offset(1,0);E37") 'ceci ne marche pas
Ou si mon rectangle va de la case MC à E37
---Set variable = Range("MC;E37") 'ceci ne marche pas
ni comment copier,couper et coller un rectangle de cellules avec VBA.
Pouvez vous m'aider?
Merci
Fritz
A voir également:
- [VBA Exc]Copier rect. de cases avec 1variable
- Comment copier une vidéo youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
- Historique copier coller - Guide
- Copier disque dur - Guide
- Unstoppable copier - Télécharger - Récupération de données
1 réponse
Bonjour Fritz,
une question en retour : pourquoi ne supprimes-tu pas simplement la ligne ? Les lignes suivantes vont automatiquement remonter d'un cran.
Sinon, pour sélectionner le rectangle de A?? à E37, on peut faire comme suit :
MC.Offset(1, 0) : ça tu l'avais bien utilisé
MC.Offset(37 - MC.Row, 4) : à partir de MC, on décale de 4 colonnes (A à E) et du nombre de lignes correspondant à la différence entre 37 et le numéro de ligne de MC.
A suivre...
une question en retour : pourquoi ne supprimes-tu pas simplement la ligne ? Les lignes suivantes vont automatiquement remonter d'un cran.
MC.EntireRow.Delete
Sinon, pour sélectionner le rectangle de A?? à E37, on peut faire comme suit :
Dim Plage as Range Set Plage = Range(MC.Offset(1, 0), MC.Offset(37 - MC.Row, 4)) Plage.Select
MC.Offset(1, 0) : ça tu l'avais bien utilisé
MC.Offset(37 - MC.Row, 4) : à partir de MC, on décale de 4 colonnes (A à E) et du nombre de lignes correspondant à la différence entre 37 et le numéro de ligne de MC.
A suivre...