agir sur plusieurs cellules non adjacentes

supercrapaud

XLDnaute Occasionnel
Bonjour à tous,
Je me permets de vous soumettre un cas que je n'arrive pas à résoudre. je cherche à faire du copier/coller dans des cellules qui ne sont pas adjacentes après avoir inséré une ligne. J'ai essayé de le faire en utilisant la méthode array et avec un tableau "temp" mais sans succès. Pouvez-vous m'aider SVP. Voici un fichier pour vous éclairer. En vous remerciant par avance.
 

Pièces jointes

  • pbcellules.zip
    377 bytes · Affichages: 21
  • pbcellules.zip
    377 bytes · Affichages: 23
  • pbcellules.zip
    377 bytes · Affichages: 24

supercrapaud

XLDnaute Occasionnel
Re : agir sur plusieurs cellules non adjacentes

Bonjour,
Voilà le fichier modifié. je n'ai pas compris ce qu'il s'est passé lorsque j'ai voulu le zipper. Cela devrait être bon maintenant. Merci par avance.
 

Pièces jointes

  • pbcellules.zip
    25.5 KB · Affichages: 17
  • pbcellules.zip
    25.5 KB · Affichages: 20
  • pbcellules.zip
    25.5 KB · Affichages: 20

job75

XLDnaute Barbatruc
Re : agir sur plusieurs cellules non adjacentes

Re,

Accablante cette macro, avec tous ces Select et Paste :(

Pour éviter de se prendre la tête, joignez un fichier avec une 2ème feuille montrant clairement ce que vous voulez obtenir en modifiant la 1ère feuille.

Mettez-y au besoin des explications.

A+
 

supercrapaud

XLDnaute Occasionnel
Re : agir sur plusieurs cellules non adjacentes

Bonjour,
Je sais pour la macro, je débute donc je tatonne et fais pas à pas mais j'essaie de m'améliorer ! (d'où ma demande). Le fichier que j'ai joint devrait suffire. Je m'explique : lorsque vous exécutez la macro, une ligne est ajoutée puis il y a des copies des formules que j'ai créées dans les nouvelles lignes.

Je veux juste la même chose (recopie des formules dans la cellule Dx, Fx, Hx...) mais avec une formulation qui évite d'avoir 4 lignes pour recopié dans chaques cellules. J'espère que je suis plus clair. Merci.
 

job75

XLDnaute Barbatruc
Re : agir sur plusieurs cellules non adjacentes

Re,

Bon si j'ai bien compris, remplacez tout votre code (incluant la ligne du haut avec Dim...) par :

Code:
Sub Ajout_ligne()
Dim T As Range
Set T = Range("totaux" & ActiveSheet.Name)
T.Insert Shift:=xlDown
T.Offset(-2).Copy T.Offset(-1)
T.Cells(1, 3).Select 'si l'on y tient absolument...
End Sub

A+
 

job75

XLDnaute Barbatruc
Re : agir sur plusieurs cellules non adjacentes

Re,

On peut aussi écrire :

Code:
Sub Ajout_ligne()
With Range("totaux" & ActiveSheet.Name)
  .Insert Shift:=xlDown
  .Offset(-2).Copy .Offset(-1)
  .Cells(1, 3).Select 'si l'on y tient absolument...
End With
End Sub

A+
 

supercrapaud

XLDnaute Occasionnel
Re : agir sur plusieurs cellules non adjacentes

OK je sais que j'ai encore beaucoup à apprendre mais quand même soyez pas trop dur ! Le code me paraît inckel (quel est le plus rapide des 2 ?) mais j'y vois un petit problème. En effet, je pense qu'il ne prend pas en compte le but de ce tableau. Je m'explique :

Le but de cette macro est d'ajouter les lignes au fur et à mesure que nous en avons besoin. Les formules sont copiées et les totaux se mettent à jour automatiquement. Dans le cas de figure où l'on s'y prend en avance, cela ne pose pas de problèmes.

Mais dans le cas où l'on ajouterait une ligne alors que toutes les autres lignes du tableau seraient déjà remplies alors la nouvelle ligne contiendrait des infos alors qu'elle devrait être vide pour pouvoir y saisir quelque chose (Voir le fichier joint).

Enfin, mes formules nécessitent qu'une ligne grisée soit gardée vide dans le tableau des Entrées c'est pourquoi je n'ai pas rédigé de code qui prenne une ligne entier. Dans le cas présent fait que les formules ne sont pas recopiées pour ce tableau
 

Pièces jointes

  • pbcellules.zip
    25.2 KB · Affichages: 18
  • pbcellules.zip
    25.2 KB · Affichages: 17
  • pbcellules.zip
    25.2 KB · Affichages: 18

job75

XLDnaute Barbatruc
Re : agir sur plusieurs cellules non adjacentes

Re,

Mais dans le cas où l'on ajouterait une ligne alors que toutes les autres lignes du tableau seraient déjà remplies alors la nouvelle ligne contiendrait des infos alors qu'elle devrait être vide pour pouvoir y saisir quelque chose (Voir le fichier joint).

Pour cela uniquement, utiliser ce code :

Code:
Sub Ajout_ligne()
[COLOR="red"]On Error Resume Next 'au cas où il n'y a pas de constantes[/COLOR]
With Range("totaux" & ActiveSheet.Name)
  .Insert Shift:=xlDown
  .Offset(-2).Copy .Offset(-1)
  [COLOR="red"].Offset(-1).SpecialCells(xlCellTypeConstants).ClearContents 'efface les constantes[/COLOR]
  .Cells(1, 3).Select 'si l'on y tient absolument...
End With
End Sub

Par contre pas sûr d'avoir bien compris ceci :

Enfin, mes formules nécessitent qu'une ligne grisée soit gardée vide dans le tableau des Entrées

S'il faut aussi effacer les formules des cellules grisées, alors plutôt ce code :

Code:
Sub Ajout_ligne()
Dim cel As Range
With Range("totaux" & ActiveSheet.Name)
  .Insert Shift:=xlDown
  .Offset(-2).Copy .Offset(-1)
  [COLOR="Red"]For Each cel In .Offset(-1)
    If Not cel.Formula Like "=*" Or cel.Interior.ColorIndex > 0 Then cel.ClearContents
  Next[/COLOR]
  .Cells(1, 3).Select 'si l'on y tient absolument...
End With
End Sub

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87