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
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
A voir également:
- Création d'une macro excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Calculer une moyenne sur excel - Guide
- Si et excel - Guide
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
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
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
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
Modifié par pijaku le 17/05/2010 à 12:35
Bonjour,
calculer le nombre de lignes fusionnées :
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? --
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? --
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
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
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
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
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
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
17 mai 2010 à 15:29
Sur le End Sub il me dit End With attendu
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
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
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
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
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?
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?
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
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 :
Ne te reste qu'à copier coller les valeurs qui t'intéressent...
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...
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
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
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