URGENT!!!! Comment entrer un code macro?

Cameron81

XLDnaute Nouveau
Bonjour à tous,

J'ai un souci avec un code pour une macro,
je vous laisse le code pour une explication sachant que je ne m'en suis jamais servi jusqu'à ce jour.
Je suis vraiment une novice concernant ce sujet.
Ci-aprés le code en question et en fichier joint un exemple, le but étant de créer une nouvelle base de données à partir de 2 autres.
Je ne sais pas du tout comment faire pour l'insérer ce code...
Faut-il passer par Visual Basic???? je 'nai aucune idée !!!!!!!!

Merci de votre aide

Code:

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False

Derlign = Sheets("bdd A").Range("A" & Application.Rows.Count).End(xlUp).Row
Derlign2 = Sheets("bdd B").Range("A" & Application.Rows.Count).End(xlUp).Row
Derlign3 = Derlign + Derlign2 - 1

With Sheets("bdd c")
If .Range("A2") <> "" Then .Range("A2:J" & .Range("A" & Application.Rows.Count).End(xlUp).Row).ClearContents

Sheets("bdd A").Rows("2:" & Derlign).Copy Destination:=.Range("A2")
.Range("K2:K" & Derlign) = "A"

Sheets("bdd B").Rows("2:" & Derlign2).Copy Destination:=.Range("A" & Derlign + 1)
.Range("K" & Derlign + 1 & ":K" & Derlign3) = "B"

.Range("L2:L" & Derlign3).FormulaLocal = "=SOMMEPROD(($A$2:$A$" & Derlign3 & "=$A2)*($K$2:$K$" & Derlign3 & "=""A"")*1)"

For i = Derlign3 To 1 Step -1
If .Cells(i, 12).Value <> 0 Then .Rows(i).Delete
Next i

.Columns("K:L").ClearContents
.Activate
End With
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • Données Excel.xls
    19 KB · Affichages: 164
Dernière édition:

Sofhy

XLDnaute Occasionnel
Re : URGENT!!!! Comment entrer un code macro?

Bonjour Cameron81,

URGENT, URGENT, Zen papillon ...

Pour entrer le code :
- Alt F11
- Puis Insertion Module

Ensuite, tu pourras coller ton code dans le nouveau module.
Si tu veux plus d'explication sur le code, je laisse les pros te répondre.

A++
Sofhy
 

jojo3008

XLDnaute Junior
Re : URGENT!!!! Comment entrer un code macro?

coucou Sofhy, Cameron

peut etre il faut éxecuter le code :)
tu clique sur la petite fleche "marche" dans l'éditeur VBA, ou bien encore depuis le menu excel, executer une macro. racourci ALT + F8 je crois
 

mromain

XLDnaute Barbatruc
Re : URGENT!!!! Comment entrer un code macro?

Bonjour Cameron81, Sophy, jojo3008

Tu avais déjà ouvert ce fil pour ce problème (d'après Lien supprimé, il faut éviter ce genre de manip ;)).
Sinon, j'ai adapté le code que je t'avais fournis sur ce même fil : en fait, j'ai juste modifié ce qui est en rouge (l'initialisation des 3 tableaux). La macro semble fonctionner :
VB:
Sub Test()
'* Déclaration des variables
Dim tableauA As Range, tableauB As Range, tableauC As Range, curCell As Range, zoneConcatA As Range, zoneConcatB As Range
Dim i As Long
Dim formule As String
    
    
    '* Initialisation des variables
    Set tableauA = ThisWorkbook.Sheets("bdd 1").Range("A3:C5")     'données du premier trimerstre
    Set tableauB = ThisWorkbook.Sheets("bdd 2").Range("A3:C10")    'données du premier et deuxième trimerstre
    Set tableauC = ThisWorkbook.Sheets("bdd 3").Range("A3")        'première case du tableau résultat (deuxième trimerstre uniquement)
    
    
    '* On va écrire (par formule) dans la colonne à droite du tableauA la concaténation avec "|" des colonnes du tableau
    '       Remarque : cela implique que la colonne à droite du tableau doit être vide
    
    'définir la zone ou sera écrite la concaténation
    Set zoneConcatA = tableauA(1, 1).Offset(0, tableauA.Columns.Count).Resize(tableauA.Rows.Count, 1)
    
    'générger la formule
    formule = "="
    For i = tableauA(1, 1).Column To tableauA(1, 1).Column + tableauA.Columns.Count - 1
        formule = formule & "RC" & i & "&""|""&"
    Next i
    formule = Left(formule, Len(formule) - 5)
    
    'appliquer la formule à la zone à droite du tableauA
    zoneConcatA.FormulaR1C1 = formule
    
    
    '* On fait la même chose à droite du tableauB
    Set zoneConcatB = tableauB(1, 1).Offset(0, tableauB.Columns.Count).Resize(tableauB.Rows.Count, 1)
    formule = "="
    For i = tableauB(1, 1).Column To tableauB(1, 1).Column + tableauB.Columns.Count - 1
        formule = formule & "RC" & i & "&""|""&"
    Next i
    formule = Left(formule, Len(formule) - 5)
    zoneConcatB.FormulaR1C1 = formule
    
    
    '* On écrit dans tableauC ce qui est dans tableauB et pas dans tableauA
    
    'on filtre avec les valeurs concaténées
    i = 0
    For Each curCell In zoneConcatB
        If zoneConcatA.Find(curCell.Text, , xlValues, xlWhole) Is Nothing Then
            i = i + 1
            tableauC(1, 1).Offset(i - 1, 0) = curCell.Text
        End If
    Next curCell
    
    'on "dé-concatène"
    If i <> 0 Then
        tableauC(1, 1).Resize(i).TextToColumns tableauC(1, 1), xlDelimited, xlDoubleQuote, , , , , , True, "|"
    End If
    
    'effacer les formules de concaténation
    zoneConcatA.Clear
    zoneConcatB.Clear
End Sub
a+
 
Dernière édition:

Sofhy

XLDnaute Occasionnel
Re : URGENT!!!! Comment entrer un code macro?

Bonjour Cameron81,

Bon, et bien c'est peut être là où je ne suis plus la bonne personne.
Je ne suis pas très avancée en vba.

Du coup, j'ai regardé tes demandes précédentes.
D'après ce que j'ai vu, tu as pris le code d'un autre fil, qui correspond à un autre fichier que le tien.
Peut être que tu devrais intégrer un des codes fourni sur ton post principal ici et qui correspond à ton fichier: https://www.excel-downloads.com/threads/excel-donnees.147734/

A++
Sofhy
 

Cameron81

XLDnaute Nouveau
Re : URGENT!!!! Comment entrer un code macro?

Oui en effet j'ai un autre exemple avec les solutions qui étaient proposées mais ct juste pour tester avec le tableau qui y été fourni mais ça ne march pas mais bon c pas grave j'attends de voir s'il yaura d'autres solutions.
Merci.

Cdt.
 

Sofhy

XLDnaute Occasionnel
Re : URGENT!!!! Comment entrer un code macro?

Bonjour mromain et jojo 3008
Re Cameron81,

j'attends de voir s'il yaura d'autres solutions

Euh, et bien il y a celle de mromain et qui fonctionne très bien :confused:

Si tu as des difficultés à intégrer sa macro, je te renvoie ton fichier avec son code copié dedans.

A+
Sofhy
 

Pièces jointes

  • Cameron81.xls
    25.5 KB · Affichages: 192
Dernière édition:

Discussions similaires

Réponses
4
Affichages
205

Statistiques des forums

Discussions
312 176
Messages
2 085 965
Membres
103 069
dernier inscrit
jujulop