[Macro Excel] Copie de formules etc...
Fermé
Cubik
-
28 juil. 2010 à 10:32
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 - 29 juil. 2010 à 18:34
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 - 29 juil. 2010 à 18:34
A voir également:
- [Macro Excel] Copie de formules etc...
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Formules excel de base - Guide
- Liste déroulante excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Formule excel si et - Guide
6 réponses
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
28 juil. 2010 à 14:34
28 juil. 2010 à 14:34
Bonjour,
Est-ce que: le nom en colonne A et le matricule en colonne B ?
Pour la questions bonus; pas de doublon dans [Worksheets("Utilisateurs")] donc le message pas nécessaire; Oui / Non !
Est-ce que: le nom en colonne A et le matricule en colonne B ?
Pour la questions bonus; pas de doublon dans [Worksheets("Utilisateurs")] donc le message pas nécessaire; Oui / Non !
En gros on a pour les 15 colonnes :
Réseau|Région|DA|Libellé|Matricule OP@LE|Matricule RH|Nom utilisateur windows|Titre|Prénom|Nom|N° Téléphone|Adresse Mail|Fonction|Périmètre Achat|Procurement management roles
On renseigne tous les champs en gras, et les autres champs se remplissent automatiquement via des formules =si(estvide(nom);"";recherchev(....)). Les cellules recopiées en valeur sur l'autre feuille sont vides mais ne sont pas considérées comme tel.
La condition serait que sur le nouvel utilisateur soit fait un test sur le DA + Matricule (un utilisateur peut être sur plusieurs domaines d'activité).
Réseau|Région|DA|Libellé|Matricule OP@LE|Matricule RH|Nom utilisateur windows|Titre|Prénom|Nom|N° Téléphone|Adresse Mail|Fonction|Périmètre Achat|Procurement management roles
On renseigne tous les champs en gras, et les autres champs se remplissent automatiquement via des formules =si(estvide(nom);"";recherchev(....)). Les cellules recopiées en valeur sur l'autre feuille sont vides mais ne sont pas considérées comme tel.
La condition serait que sur le nouvel utilisateur soit fait un test sur le DA + Matricule (un utilisateur peut être sur plusieurs domaines d'activité).
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
28 juil. 2010 à 18:14
28 juil. 2010 à 18:14
Bonjour,
Merci pour l'information.
En principe il suffirait de copier/coller que les colonnes [C,G :K,M :N] car les autres sont renseignées par des formules qui sont, forcément, déjà sur la feuille [Utilisateurs] (il suffit de les tirer selon la nouvelle grandeur).
Est-vous d'accord ?
Les doublons sont sur DA+Matricule, oui mais quel matricule est valable colonne E ou F ?
Merci pour l'information.
En principe il suffirait de copier/coller que les colonnes [C,G :K,M :N] car les autres sont renseignées par des formules qui sont, forcément, déjà sur la feuille [Utilisateurs] (il suffit de les tirer selon la nouvelle grandeur).
Est-vous d'accord ?
Les doublons sont sur DA+Matricule, oui mais quel matricule est valable colonne E ou F ?
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
29 juil. 2010 à 00:28
29 juil. 2010 à 00:28
Bonjour,
Essayer cette procédure à mettre dans le module feuille [Utilisateurs]:
Essayer cette procédure à mettre dans le module feuille [Utilisateurs]:
Sub AjoutUtilisateurs() Dim cel As Range Dim doublon Application.ScreenUpdating = False '*** variable de contrôle doublon deli = WorksheetFunction.CountA(Columns(3)) lico = deli + 1 ReDim doublon(deli) For c = 2 To deli doublon(c - 2) = Cells(c, 3) & Cells(c, 6) Next c For Each cel In Worksheets("Ajout Users").Range("c5:c50") ' contrôl si doublon For d = 0 To UBound(doublon) If doublon(d) = (cel.Value & cel.Offset(0, 3)) Then ' MsgBox "doublon" GoTo Suite End If Next d ' ligne valable Rows(lico) = Worksheets("Ajout Users").Rows(cel.Row).Value lico = lico + 1 Suite: Next cel 'Transfère les éléments du tableau dans la feuille de calcul ' Range(Cells(1, 1), Cells(UBound(NomTableau, 1), UBound(NomTableau, 2))) = NomTableau ' incrémenter les formules deb = deli + 1: fin = lico Range("A" & deli & ":B" & deli).AutoFill Destination:=Range("A" & deli & ":B" & lico - 1), Type:=xlFillDefault Range("D" & deli & ":E" & deli).AutoFill Destination:=Range("D" & deli & ":E" & lico - 1), Type:=xlFillDefault Range("L" & deli & ":L" & deli).AutoFill Destination:=Range("L" & deli & ":L" & lico - 1), Type:=xlFillDefault Range("O" & deli & ":O" & deli).AutoFill Destination:=Range("O" & deli & ":O" & lico - 1), Type:=xlFillDefault 'Vider les cellules renseignées Worksheets("Ajout Users").Range("C5:C50,G5:K50,M5:N50").ClearContents MsgBox ("Utilisateur(s) ajouté(s)") Application.ScreenUpdating = True End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Les conditions me donnaient une erreur. Au final j'ai pu exploiter un collègue qui passait dans le coin et ça a donné ça :
Sub AjoutUsers()
Dim texte As String
Dim doublonTrouve As Boolean
doublonTrouve = False
Application.ScreenUpdating = False
MsgBox ("Merci d'attendre la fin de la mise à jour")
Worksheets("Utilisateurs").Select
Selection.AutoFilter Field:=3 'Remettre le filtre auto à 0
nombreligne = 0
ligne = 5
Do While Worksheets("Ajout Users").Cells(ligne, 3) <> ""
ligne = ligne + 1
nombreligne = nombreligne + 1
Loop
ligne = 1
Do While Worksheets("Utilisateurs").Cells(ligne, 1).Value <> "" And Worksheets("Utilisateurs").Cells(ligne, 1).Value <> " "
For i = 1 To nombreligne
If Worksheets("Utilisateurs").Cells(ligne, 3).Value = Worksheets("Ajout Users").Cells(i + 4, 3).Value _
And Worksheets("Utilisateurs").Cells(ligne, 5).Value = Worksheets("Ajout Users").Cells(i + 4, 5).Value Then
texte = texte + "L'utilisateur " & Worksheets("Utilisateurs").Cells(ligne, 5).Value & " existe déjà sur le site " & Worksheets("Utilisateurs").Cells(ligne, 3).Value
doublonTrouve = True
End If
Next i
ligne = ligne + 1
Loop
If doublonTrouve = False Then
Worksheets("Ajout Users").Select
Range("A5:O50").Select 'Sélectionner la plage maxi d'utilisateurs à ajouter
Selection.Copy
Worksheets("Utilisateurs").Activate
ligne = 1
Do While Cells(ligne, 1).Value <> "" And Cells(ligne, 1).Value <> " "
ligne = ligne + 1
Loop
Cells(ligne, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False 'Coller la sélection d'utilisateurs
MsgBox ("Utilisateur(s) ajouté(s)")
Else
MsgBox texte
End If
'Vider les cellules renseignées
Worksheets("Ajout Users").Range("C5:C50,G5:K50,M5:N50").ClearContents
Application.ScreenUpdating = True
End Sub
Merci beaucoup d'avoir planché dessus en tout cas.
Cordialement
Sub AjoutUsers()
Dim texte As String
Dim doublonTrouve As Boolean
doublonTrouve = False
Application.ScreenUpdating = False
MsgBox ("Merci d'attendre la fin de la mise à jour")
Worksheets("Utilisateurs").Select
Selection.AutoFilter Field:=3 'Remettre le filtre auto à 0
nombreligne = 0
ligne = 5
Do While Worksheets("Ajout Users").Cells(ligne, 3) <> ""
ligne = ligne + 1
nombreligne = nombreligne + 1
Loop
ligne = 1
Do While Worksheets("Utilisateurs").Cells(ligne, 1).Value <> "" And Worksheets("Utilisateurs").Cells(ligne, 1).Value <> " "
For i = 1 To nombreligne
If Worksheets("Utilisateurs").Cells(ligne, 3).Value = Worksheets("Ajout Users").Cells(i + 4, 3).Value _
And Worksheets("Utilisateurs").Cells(ligne, 5).Value = Worksheets("Ajout Users").Cells(i + 4, 5).Value Then
texte = texte + "L'utilisateur " & Worksheets("Utilisateurs").Cells(ligne, 5).Value & " existe déjà sur le site " & Worksheets("Utilisateurs").Cells(ligne, 3).Value
doublonTrouve = True
End If
Next i
ligne = ligne + 1
Loop
If doublonTrouve = False Then
Worksheets("Ajout Users").Select
Range("A5:O50").Select 'Sélectionner la plage maxi d'utilisateurs à ajouter
Selection.Copy
Worksheets("Utilisateurs").Activate
ligne = 1
Do While Cells(ligne, 1).Value <> "" And Cells(ligne, 1).Value <> " "
ligne = ligne + 1
Loop
Cells(ligne, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False 'Coller la sélection d'utilisateurs
MsgBox ("Utilisateur(s) ajouté(s)")
Else
MsgBox texte
End If
'Vider les cellules renseignées
Worksheets("Ajout Users").Range("C5:C50,G5:K50,M5:N50").ClearContents
Application.ScreenUpdating = True
End Sub
Merci beaucoup d'avoir planché dessus en tout cas.
Cordialement
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 452
29 juil. 2010 à 18:34
29 juil. 2010 à 18:34
Bonjour,
J'ai essayez votre code.
Il y a déjà une erreur d'exécution `1004' qui se produit et ensuite dans la feuille des utilisateurs les doublons ne sont pas supprimés.
Enfin selon se que j'ai compris.
Il serait intéressant pour moi de savoir ou se produit l'erreur avec mon code !
J'ai essayez votre code.
Il y a déjà une erreur d'exécution `1004' qui se produit et ensuite dans la feuille des utilisateurs les doublons ne sont pas supprimés.
Enfin selon se que j'ai compris.
Il serait intéressant pour moi de savoir ou se produit l'erreur avec mon code !