Macro pour copie et insertion de ligne ou colonne en gardant uniquement les formules

WISEDOME

XLDnaute Junior
Salut à tous.

Je suis débutant en VBA, et j'ai besoin de l'aide des experts de ce forum pour me sortir d'une difficulté.

Mon problème se résume comme suite:

Je dispose d'une tableau composé comme suit:
- Etiquette de colonne : liste de fournisseurs A; B; C; D; E;..... ;
- Etiquette lignes Critères d'évaluation des fournisseurs (ces lignes comprennent des formules)

je souhaites à l'aide d'une macro insérer d'une part et indépendament:

1- un nouveau fournisseur entre A et B et copier dans la colonne de ce nouveau fournisseur, toutes les fourmules qu'on retrouve chez les autres fournisseurs;


2- une nouvelle ligne de critère juste en dessous du deuxième critère (Crière A) et copier également toutes formules présentes dans les autres lignes.


J'ai essayé pour l'insertion des colonnes, mais mon programme me récopie après insertion de la nouvelle colonne, les données et formules de la colonne suivantes.

Need really your support please!!!

Vous trouverez en attache un exemple de fichier.
 

Fichiers joints

BrunoM45

XLDnaute Barbatruc
Re : Macro pour copie et insertion de ligne ou colonne en gardant uniquement les form

Bonjour Wisedome,

Il existe pour ce genre de demande, ce que l'on appelle l'enregistreur de macro
Onglet "Affichage" -> Macros -> Enregistrer une macro
Tu effectues ensuite toutes les actions nécessaires
Tu arrête l'enregistrement de la macro
Tu fais un peu de ménage dans le code
et tu obtiens
Code:
Columns("E:E").Copy
Selection.Insert Shift:=xlToRight
Application.CutCopyMode = False
Range("E5;E6:E8;E10:E12;E14:E16;E18:E20;E22:E24;E26:E28").ClearContents
A+
 
G

Guest

Guest
Re : Macro pour copie et insertion de ligne ou colonne en gardant uniquement les form

Bonjour,

Ce que tu as fait est pas mal du tout, voici qui complète.

Je te laisse tenter le coup pour la ligne à insérer (même méthode)

Code:
Sub AjoutNouveauFournisseur()
'
' Ajout d'un Nouveau fournisseur dans la feuille synthèse Analyses CFT
'
    With Worksheets("Synthèse Analyses CFT")
        Dim DataRange As Range
        Dim fournisseur As String
        fournisseur = InputBox("Entrez le nom du nouveau fournisseur", "Ajouter un fournisseur")
        If fournisseur <> "" Then
 
            .Columns("E:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
            .Columns("F:F").Copy
            .Columns("E:E").Select
            .Columns("E:E").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
                                         SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False
            'Travaille sur l'intersection entre la totalité de la colonne et le tableau général
            On Error Resume Next 'Si .SpecialCells ne retourne rien (pas de cellules avec constantes) -> erreur
            With Intersect(Range("E4").CurrentRegion, .Columns("E:E"))
                .SpecialCells(xlCellTypeConstants).ClearContents
                .Range("A1") = fournisseur 'Nom du fournisseur dans la première cellule de l'intersection
            End With
 
        End If
    End With
End Sub
A+
 
Dernière édition par un modérateur:

WISEDOME

XLDnaute Junior
Re : Macro pour copie et insertion de ligne ou colonne en gardant uniquement les form

Merci à Bruno et particulèrement à Hasco dont la solution me soulage à merveille.

Cependant vous n'avez pas fait cas du ("2- Insertion d'une nouvelle ligne de critère juste en dessous du deuxième critère (Crière A) et copier également toutes formules présentes dans les autres lignes.).

Aussi je souhaiterais que Hasco m'explique à quoi sert chaque partie des éléments qu'il a ajoutés au code, car je suis débutant en la matière, et je voudrais bien comprendre pour pouvoir éventuellement modifier à souhait.

Merci encore à tous!!!
 
G

Guest

Guest
Re : Macro pour copie et insertion de ligne ou colonne en gardant uniquement les form

Re,

Cependant vous n'avez pas fait cas du ("2- Insertion d'une nouvelle ligne de critère juste en dessous du deuxième critère (Crière A) et copier également toutes formules présentes dans les autres lignes.).
Eh non! le but du forum n'est pas de pondre des solutions toutes faites.

Code:
Aussi je souhaiterais que Hasco m'explique à quoi sert chaque partie des éléments qu'il a ajoutés au code
Il me semble avoir mis des commentaires dans les lignes de codes que j'ai joint au message.

Pour plus d'information sur les éléments de langage, F1 (l'aide d'excel) ou un bon bouquin feront merveille.

, car je suis débutant en la matière, et je voudrais bien comprendre pour pouvoir éventuellement modifier à souhait.
Belle intention, mais qui demande de la rigueur et du travail.

P.S. tu peux enlever la ligne
Code:
Dim DataRange As Range
Car je n'ai pas utilisé cette variable objet dans la suite du code

Commentaires supplémentaires:
InputBox sert à demander une information textuelle à l'utilisateur

Range("E4").CurrentRegion renvoie le tableau de celllules qui contient "E4"
(renvoie une erreur si la feuille est protégée)

Intersect renvoie l'intersection de deux ou plusieurs plage de cellules
(ici l'intersection de ton tableau et de la colonne entière ajoutée)

.SpecialCells renvoie les cellules d'un objet range avec des caractéristiques spéciales (voir l'aide excel) Pour ta macro il s'agit des cellules qui contiennent des constantes et non des formules.

Si .SpecialCells ne trouve aucune cellule correspondante, renvoie une erreur d'où le 'on error resume next'

.ClearContents vide le contenu des cellules renvoyées par .SpecialCells


A+
 
Dernière édition par un modérateur:

WISEDOME

XLDnaute Junior
Re : Macro pour copie et insertion de ligne ou colonne en gardant uniquement les form

Merci Beaucoup HASCO pour les précisions sur éléments de ton code.

Pourrais-tu me conseiller des documents (téléchargeable ou physiques) qui me permettrons d'apprendre rapidement? Je pourrais ainsi chercher comment resoudre le second problême et etre plus à même d'aider d'autres sur ce forum?

Cdlt.
 
G

Guest

Guest
Re : Macro pour copie et insertion de ligne ou colonne en gardant uniquement les form

Bonjour,

Les livres de John Walkenbach sont généralement très bons.

Fait une recherche sur Google.

Sinon pour ton 2 problème, c'est si j'ai bien compris la même chose que pour la colonne. Alors commence par faire ce que tu as fais pour la colonne. Essaie d'adapter comme tu peux ce que je t'ai donné et reviens avec ton exemple et tes tentatives.

A+
 

WISEDOME

XLDnaute Junior
Re : Macro pour copie et insertion de ligne ou colonne en gardant uniquement les form

HASCO,

En suivant tes instructions, j'ai essayé de produire quelque chose, mais je rencontre encore quelques difficultés: Je n'arrive pas à insérer plus d'un critère.

Pourrais-tu m'aider à identifier ce qui ne va pas. J'espère que tu seras indulgent. Je suis vraiment très passionné de la chose et veux vraiment apprendre.

Merci pour ta sollicitude.
 
G

Guest

Guest
Re : Macro pour copie et insertion de ligne ou colonne en gardant uniquement les form

Re,

Tu auras remarqué que dans le post N° 3 j'ai joint intentionnellement un fichier .xls afin que ceux qui n'ont pas 2007 puissent l'ouvrir.

Si tu pouvais faire de même se serait sympa, puisque c'est un sujet général et non spécifique à 2007.

A+
 
G

Guest

Guest
Re : Macro pour copie et insertion de ligne ou colonne en gardant uniquement les form

Re,

Voici ton fichier modifié.

Je te laisse consulté l'aide pour les explications.

Mais pour apprendre c'est à partir de choses simples faites à l'aide de l'enregistreur de macro.

[Edition] j'ai changé la pièce jointe pour mettre une autre méthode pour faire la même chose. Vois bien les différences.
 
Dernière édition par un modérateur:

WISEDOME

XLDnaute Junior
Re : Macro pour copie et insertion de ligne ou colonne en gardant uniquement les form

Bonjour HASCO,

C'est exactement ce que je voulais. Merci infiniment. T'es vraiment un Génie!!!
Vive ce forum.

A bientôt IA.
 

Discussions similaires


Haut Bas