Création d'une macro excel

Fermé
rondup Messages postés 29 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 17 mai 2010 - 17 mai 2010 à 10:34
rondup Messages postés 29 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 17 mai 2010 - 17 mai 2010 à 17:11


Bonjour à tous et à toutes,


J'ai besoin de votre aide, je suis une bille en macro et je souhaite réaliser un fichier excel qui je pense nécessite ce recours.

Je vous explique mon problème.

Je souhaite remplir différentes cellules de mon tableur automatiquement en utilisant un code chiffre.

La correspondance se fait sur une feuille située sur le même fichier (Elle est nommée Analyse). On retrouve sur celle-ci en colone A les numéros (servant de code) puis différents critères. La cellule comportant ce numéro peut être fusionnée pour renvoyer à 2, 3 ou 4 lignes différentes.

Ce que je souhaite c'est que quand je rentre dans la cellule Jn° de ma feuille Nommée DUAuto je puisse executer la marco qui détecte le N° code, puis insère le nombre de ligne suffisante, fusionne verticalement les cellules précédent la colone J Puis vienne Copier/Coller les différents critères correspondants à mes lignes de la feuille Analyse.

Je pense ensuite mettre un bouton d'action pour excuter la macro à partir de la cellule sélectionnée...

Ce problème à l'air trés clair pour moi, mais il l'est peut être moins pour vous!!
N'hésitez pas à me poser des questions si il manque des informations importantes.


Merci de votre aide .


M
A voir également:

6 réponses

rondup Messages postés 29 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 17 mai 2010
17 mai 2010 à 12:22
J'ai commencé à fouiller de mon coté.
Pour chercher la valeur dans ma feuille Analyse j'utilise la fonction set c= find(activecell,lookin:=x1Values)

Une fois que la cellule correspondnate au critère numérique est localisée je veux ensuite compter le nombre de ligne contenues dans cette cellule (Car des cellules fusionnées).

Ensuite nommer la valeur trouvée K, pour ensuite retourner sur l'autre feuille et inserer K-1 ligne à la suite de la cellule Jn°

Quelqu'un à une idée?

Merci
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
Modifié par pijaku le 17/05/2010 à 12:35
Bonjour,
calculer le nombre de lignes fusionnées :
Dim nbrlign As Integer 
Dim c As Range 
Dim valeur As String 
valeur = ActiveCell.Value 
With Sheets(1).Columns(1) 
set c= .Cells.Find(valeur,lookin:=xlValues) 
End With 
nbrlign = c.Offset(1, 0).Row - c.Row

le nombre de lignes sera alors stocké dans la variable "nbrlign" que tu pourras utiliser pour insérer nbrlign-1 dans l'autre feuille.
Cordialement,
-- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
0
rondup Messages postés 29 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 17 mai 2010
17 mai 2010 à 14:35
J'avance à taton mais pour le moment les résultats sont pas probants.
J'ai pu redéfinir les étapes de la macro:
1-mémoriser la cellule active.
2-Rechercher dans la colonne A de la feuille Analyse le code numérique de la cellule active.
3-Compter le nombre de ligne dans cette cellule (MERCI PIJAKU) (Dans le cas ou 3 Lignes)
4- Toujours sur cette feuille Copier les cellules B, C, C+1, C+2
5-revenir à la feuille d'origine
6-Selectionner la cellule sous la cellule active d'origine.
7-Inserer NbrLigne-1
8-Coller les cellules copiées à l'etape 4 en colonne K, M, M+1 et M+2
9-Fusionner verticalement les cellules (A:A+1:A+2) et(B:B+1:b+2) à (J:J+1:J+2)

Pour le moment j'ai écrit ça mais ça bloque à "MsgBox". Pouvez vous me filer un coup de main?

Sub TestMacro2()

1: 'Mémoriser la Cellule de départ'
Set Ici = ActiveCell
2: 'rechercher la valeur de la ligne active'
With Worksheets(Analyse).Range("a2:a500")
Set c = .Find(ActiveCell, LookIn:=x1Values)
If Not c Is MsgBox(Prompt, vbOKOnly, [Erreur], ["Ce N° n'existe pas!!!]) Then

firstAddress = c.Address

3: 'compter le nombre de cellule fusionnées'
Dim nbrlign As Integer
Dim c As Range
Dim valeur As String
valeur = c.Address
With Sheets(1).Columns(1)
Set c = .Cells.Find(valeur, LookIn:=xlValues)
End With
nbrlign = c.Offset(1, 0).Row - c.Row

4: 'retourner à la cellule initiale'
End Sub
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
Modifié par pijaku le 17/05/2010 à 14:55
Bon ce code est à tester... :
 Sub test() 
Dim nbrlign As Integer  
Dim c As Range 
'Mémoriser la Cellule de départ 
Dim valeur As String 'ou Long selon s'il s'agit de nombres ou de caractères 
valeur = ActiveCell.Value 'que l'on peux remplacer par : valeur = Sheets("NomDeLaFeuille").Range("A5").Value 
'rechercher la valeur dans le tableau colonne A 
With Worksheets("Analyse").Range("A2:A500")  
Set c = .Find(valeur, LookIn:=xlValues) 
'message d'erreur si le N° n'existe pas 
If c Is Nothing Then  
MsgBox "Ce N° n'existe pas!!!" 
'sortir de la procédure car le N° n'existe pas 
Exit Sub 
End If 
'compter le nombre de cellules fusionnées 
nbrlign = c.Offset(1, 0).Row - c.Row 
End Sub 
0
rondup Messages postés 29 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 17 mai 2010
17 mai 2010 à 15:29
Sur le End Sub il me dit End With attendu
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
17 mai 2010 à 15:44
oui ben faut le rajouter...
Dim nbrlign As Integer
Dim c As Range
'Mémoriser la Cellule de départ
Dim valeur As String 'ou Long selon s'il s'agit de nombres ou de caractères
valeur = ActiveCell.Value 'que l'on peux remplacer par : valeur = Sheets("NomDeLaFeuille").Range("A5").Value
'rechercher la valeur dans le tableau colonne A
With Worksheets("Analyse").Range("A2:A500")
Set c = .Find(valeur, LookIn:=xlValues)
End With
'message d'erreur si le N° n'existe pas
If c Is Nothing Then
MsgBox "Ce N° n'existe pas!!!"
'sortir de la procédure car le N° n'existe pas
Exit Sub
End If
'compter le nombre de cellules fusionnées
nbrlign = c.Offset(1, 0).Row - c.Row
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rondup Messages postés 29 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 17 mai 2010
17 mai 2010 à 16:45
Comme je le disais dnas le début de ma question,
je suis vraiment un débutant en macro.

J'ai beau rechercher sur d'autre forum j'arrive pas à faire ce que je veux...

Comment on dit au "programe de retourner à la cellule initiale et de passer à la ligne suivante et d'y inserer nbrlign-1?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
17 mai 2010 à 17:01
Ou est ta cellule initiale? Qu'elle feuille? Quelle colonne, ligne?
Je suppose qu'il s'agit de l'activecell du début :
Sub test()
Dim nbrlign, i, lign As Integer
Dim c As Range
'Mémoriser la Cellule de départ
Dim valeur As String 'ou Long selon s'il s'agit de nombres ou de caractères
valeur = ActiveCell.Value 'que l'on peux remplacer par : valeur = Sheets("NomDeLaFeuille").Range("A5").Value
'rechercher la valeur dans le tableau colonne A
With Worksheets("Analyse").Range("A1:A500")
Set c = .Find(valeur, LookIn:=xlValues)
'message d'erreur si le N° n'existe pas
If c Is Nothing Then
MsgBox "Ce N° n'existe pas!!!"
'sortir de la procédure car le N° n'existe pas
Exit Sub
End If
'compter le nombre de cellules fusionnées
nbrlign = c.Offset(1, 0).Row - c.Row
End With
ActiveCell.Offset(1, 0).Activate
lign = ActiveCell.Row
For i = lign To lign + nbrlign - 2
Cells(i, 1).EntireRow.Insert
Next i
ActiveCell.Offset(-1, 0).Activate
Range(ActiveCell, ActiveCell.Offset(9, 0)).Merge
End Sub

Ne te reste qu'à copier coller les valeurs qui t'intéressent...
0
rondup Messages postés 29 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 17 mai 2010
17 mai 2010 à 17:11
Alors je reprend,
Oui c'est bien l'active cell du début, La valeur contenue dans cette cellule me permet de fixer le numéro ou chiffre à rechercher dans la colonne A de la feuille Analyse.

Je vais voir avec tes nouvelles indications.

Merci
0